<!DOCTYPE html>
<html lang="en-US" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>IDEA实用插件 | VitePress</title>
    <meta name="description" content="A VitePress site">
    <link rel="preload stylesheet" href="/notebook/assets/style.3dbfd0c2.css" as="style">
    
    <script type="module" src="/notebook/assets/app.8aaa4cbe.js"></script>
    <link rel="preload" href="/notebook/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
    <link rel="modulepreload" href="/notebook/assets/chunks/framework.1336c4e5.js">
    <link rel="modulepreload" href="/notebook/assets/chunks/theme.20cddc0c.js">
    <link rel="modulepreload" href="/notebook/assets/IDEA_IDEA插件.md.fa86e45a.lean.js">
    <script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
  </head>
  <body>
    <div id="app"><div class="Layout" data-v-255ec12d><!--[--><!--]--><!--[--><span tabindex="-1" data-v-ae3e3f51></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-ae3e3f51> Skip to content </a><!--]--><!----><header class="VPNav" data-v-255ec12d data-v-7e5bc4a5><div class="VPNavBar has-sidebar" data-v-7e5bc4a5 data-v-0937f67c><div class="container" data-v-0937f67c><div class="title" data-v-0937f67c><div class="VPNavBarTitle has-sidebar" data-v-0937f67c data-v-86d1bed8><a class="title" href="/notebook/" data-v-86d1bed8><!--[--><!--]--><!--[--><img class="VPImage logo" src="/notebook/Vue.png" alt data-v-8426fc1a><!--]--><!--[-->任硕的文档<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-0937f67c><div class="curtain" data-v-0937f67c></div><div class="content-body" data-v-0937f67c><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-0937f67c><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-0937f67c data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>Java学前端</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/HTML+JS.html" data-v-2f2cfafc><!--[-->HTML+JS<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/CSS.html" data-v-2f2cfafc><!--[-->CSS<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/Vue2+%E7%BB%84%E4%BB%B6.html" data-v-2f2cfafc><!--[-->Vue2+组件<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/Vue3+%E7%BB%84%E4%BB%B6.html" data-v-2f2cfafc><!--[-->Vue3+组件<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/React.html" data-v-2f2cfafc><!--[-->React<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>软件测试</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/%E6%B5%8B%E8%AF%95%E5%9F%BA%E7%A1%80.html" data-v-2f2cfafc><!--[-->测试基础<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/%E5%8E%8B%E5%8A%9B%E6%B5%8B%E8%AF%95.html" data-v-2f2cfafc><!--[-->压力测试<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>多线程</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E5%B9%B6%E5%8F%91%20&amp;%20%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-2f2cfafc><!--[-->基础篇<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E5%B9%B6%E5%8F%91%20&amp;%20%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E5%B9%B6%E5%8F%91%E5%AE%8C%E5%96%84.html" data-v-2f2cfafc><!--[-->进阶篇<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>开发工具</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/IDEA/Chrome.html" data-v-2f2cfafc><!--[-->Chrome<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/IDEA/IDEA%E5%9F%BA%E7%A1%80.html" data-v-2f2cfafc><!--[-->IDEA基础<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link active" href="/notebook/IDEA/IDEA%E6%8F%92%E4%BB%B6.html" data-v-2f2cfafc><!--[-->IDEA插件<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/IDEA/VS%20Code.html" data-v-2f2cfafc><!--[-->VS Code<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>消息中间件</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/RabbitMQ.html" data-v-2f2cfafc><!--[-->RabbitMQ<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/RocketMQ.html" data-v-2f2cfafc><!--[-->RocketMQ<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/Kafka.html" data-v-2f2cfafc><!--[-->Kafka<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/Canal.html" data-v-2f2cfafc><!--[-->Canal<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-0937f67c data-v-f6a63727><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-f6a63727 data-v-82b282f1 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-82b282f1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-82b282f1><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-0937f67c data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/renshuo123/renshuo123.github.io" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><a class="VPSocialLink no-icon" href="#" aria-label="twitter" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/></svg></a><a class="VPSocialLink no-icon" href="https://github.com/" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg t="1676028692954" class="icon" ...</path></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-0937f67c data-v-40855f84 data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-a7b5672a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-a7b5672a><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><!----><!--[--><!--[--><!----><div class="group" data-v-40855f84><div class="item appearance" data-v-40855f84><p class="label" data-v-40855f84>Appearance</p><div class="appearance-action" data-v-40855f84><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-40855f84 data-v-82b282f1 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-82b282f1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-82b282f1><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-40855f84><div class="item social-links" data-v-40855f84><div class="VPSocialLinks social-links-list" data-v-40855f84 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/renshuo123/renshuo123.github.io" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><a class="VPSocialLink no-icon" href="#" aria-label="twitter" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/></svg></a><a class="VPSocialLink no-icon" href="https://github.com/" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg t="1676028692954" class="icon" ...</path></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-0937f67c data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav reached-top" data-v-255ec12d data-v-5cfd5582><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-5cfd5582><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-5cfd5582><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-5cfd5582>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-5cfd5582 data-v-18201f51><button data-v-18201f51>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-255ec12d data-v-845b8fc6><div class="curtain" data-v-845b8fc6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-845b8fc6><span class="visually-hidden" id="sidebar-aria-label" data-v-845b8fc6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Java</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E6%96%B0%E7%89%B9%E6%80%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java新特性</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E9%9B%86%E5%90%88.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java集合</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E9%AB%98%E7%BA%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java高级</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Linux</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/Linux%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Linux基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/Linux%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Linux新特性</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/Shell.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Shell脚本</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/%E5%AE%9E%E7%94%A8%E8%84%9A%E6%9C%AC.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>实用脚本</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/%E8%BD%AF%E4%BB%B6%E9%83%A8%E7%BD%B2.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>软件部署</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Nginx</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Nginx/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Nginx/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Nginx/%E5%AE%9E%E6%88%98%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>实战篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Nginx/%E9%9D%A2%E8%AF%95%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>面试篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>SSM</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/SSM/Maven.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Maven</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/SSM/Spring.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Spring</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/SSM/SpringMVC.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringMVC</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/SSM/SpringBatch.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringBatch</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>SpringBoot</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/3%E3%80%81SpringBoot/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/3%E3%80%81SpringBoot/%E5%BA%94%E7%94%A8%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>应用篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/3%E3%80%81SpringBoot/%E6%96%B0%E7%89%B9%E6%80%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>新特性</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/3%E3%80%81SpringBoot/%E8%BF%90%E7%BB%B4&amp;%E5%8E%9F%E7%90%86.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>运维&原理</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>SpringCloud</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringCloud</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E5%BF%85%E5%A4%87/Sentinel.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Sentinel</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>SpringSecurity</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/SpringSecurity/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringSecurity基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/SpringSecurity/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringSecurity进阶篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/SpringSecurity/%E9%AB%98%E7%BA%A7%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringSecurity高级篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Mybatis & MybatisPlus</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Mybatis&amp;MybatisPlus/Mybatis.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Mybatis</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Mybatis&amp;MybatisPlus/MybatisPlus.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MybatisPlus</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Mybatis&amp;MybatisPlus/JPA.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>JPA</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Git & ChatGPT</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/Git.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Git</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/Github.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Github</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/ChatGPT.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ChatGPT</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/Jenkins.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Jenkins</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/Netty.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Netty</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>数据库</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>MySQL</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E4%BC%98%E5%8C%96.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL优化</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E8%AE%BE%E8%AE%A1.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL设计</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E8%BF%90%E7%BB%B4.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL运维</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>分库分表</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>Redis</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E4%BC%98%E5%8C%96.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis优化</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E5%8E%9F%E7%90%86.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis原理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E9%AB%98%E7%BA%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis高级</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E5%AE%9E%E6%88%98.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis实战</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/%E6%9C%AC%E5%9C%B0%E7%BC%93%E5%AD%98.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>本地缓存</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>MongoDB</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MongoDB/%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MongoDB基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MongoDB/%E6%95%B4%E5%90%88.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MongoDB进阶</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>ElasticSearch</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/ElasticSearch/1%E3%80%81ES%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ES基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/ElasticSearch/3%E3%80%81ES%E9%AB%98%E7%BA%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ES高级</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/influxdb.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>InfluxDB</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Neo4j.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Neo4j</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>高并发 & 秒杀 & 分布式</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%B8%89%E9%AB%98/%E5%88%86%E5%B8%83%E5%BC%8F.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>分布式理论</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E5%BF%85%E5%A4%87/%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>分布式锁</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%B8%89%E9%AB%98/%E7%A7%92%E6%9D%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>秒杀</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%B8%89%E9%AB%98/%E9%AB%98%E5%8F%AF%E7%94%A8.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>高可用</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%B8%89%E9%AB%98/%E9%AB%98%E5%B9%B6%E5%8F%91.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>高并发</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>云原生</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%BA%91%E5%8E%9F%E7%94%9F/Docker.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Docker</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%BA%91%E5%8E%9F%E7%94%9F/K8S.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>K8S</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>可视化 & 监控</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/%E7%9B%91%E6%8E%A7%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>监控基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/%E7%9B%91%E6%8E%A7%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>监控进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/%E5%8F%AF%E8%A7%86%E5%8C%96%E5%A4%A7%E5%B1%8F.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>可视化大屏</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/Zabbix.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Zabbix</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>学前端</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>HTML+CSS</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/1%E3%80%81HTML+CSS/HTML%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>HTML基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/1%E3%80%81HTML+CSS/CSS%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>CSS基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/1%E3%80%81HTML+CSS/%E7%BD%91%E9%A1%B5%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>网页进阶</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>JS+TS</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/JS%20%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>JS基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/JS%20%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>JS进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/ES6%20%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ES6基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/ES6%20%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ES6进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/TypeScript.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>TS基础</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>NodeJS</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/4%E3%80%81Node/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Node基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/4%E3%80%81Node/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Node进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/4%E3%80%81Node/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>项目实战</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>Vue</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/3%E3%80%81Vue/Vue3/Vue3%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Vue3进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/3%E3%80%81Vue/Vue3/Vue3%E9%AB%98%E7%BA%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Vue3高级</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/3%E3%80%81Vue/Vue3/Vue3%E6%96%B0%E8%AF%AD%E6%B3%95.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Vue3新语法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/3%E3%80%81Vue/Vue2/Vue2%E9%A1%B9%E7%9B%AE.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>项目实战</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>小程序</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/5%E3%80%81%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>小程序基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/5%E3%80%81%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%BC%98%E5%8C%96.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>小程序优化</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/5%E3%80%81%E5%B0%8F%E7%A8%8B%E5%BA%8F/uniapp.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>uniapp</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/5%E3%80%81%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E9%A1%B9%E7%9B%AE.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>项目实战</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>计算机基础</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>数据结构</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>操作系统</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>设计模式</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%BD%91%E7%BB%9C%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>计算机网络</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/UML.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>UML</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E7%AE%97%E6%B3%95/LeetCode.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>LeetCode</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>项目实战</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>云尚办公</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E4%BA%91%E5%B0%9A%E5%8A%9E%E5%85%AC/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>小兔鲜</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E5%B0%8F%E5%85%94%E9%B2%9C/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E5%B0%8F%E5%85%94%E9%B2%9C/%E8%BF%9B%E9%98%B6%E7%AF%871.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇1</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E5%B0%8F%E5%85%94%E9%B2%9C/%E8%BF%9B%E9%98%B6%E7%AF%872.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇2</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>地图</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E7%99%BE%E5%BA%A6%E5%9C%B0%E5%9B%BE/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E7%99%BE%E5%BA%A6%E5%9C%B0%E5%9B%BE/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>苍穹外卖</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E8%8B%8D%E7%A9%B9%E5%A4%96%E5%8D%96/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>黑马头条</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1/%E8%BF%9B%E9%98%B6%E7%AF%872.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇2</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1/%E9%AB%98%E7%BA%A7%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>高级篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E6%94%AF%E4%BB%98.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>支付</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%A1%B9%E7%9B%AE%E6%8E%A8%E8%8D%90.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>项目推荐</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0" data-v-845b8fc6 data-v-9b797284><!----><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/team.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>团队成员</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-255ec12d data-v-669faec9><div class="VPDoc has-sidebar has-aside" data-v-669faec9 data-v-6b87e69f><!--[--><!--]--><div class="container" data-v-6b87e69f><div class="aside" data-v-6b87e69f><div class="aside-curtain" data-v-6b87e69f></div><div class="aside-container" data-v-6b87e69f><div class="aside-content" data-v-6b87e69f><div class="VPDocAside" data-v-6b87e69f data-v-3f215769><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" data-v-3f215769 data-v-ff0f39c8><div class="content" data-v-ff0f39c8><div class="outline-marker" data-v-ff0f39c8></div><div class="outline-title" data-v-ff0f39c8>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-ff0f39c8><span class="visually-hidden" id="doc-outline-aria-label" data-v-ff0f39c8> Table of Contents for current page </span><ul class="root" data-v-ff0f39c8 data-v-d0ee3533><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-6b87e69f><div class="content-container" data-v-6b87e69f><!--[--><!--]--><!----><main class="main" data-v-6b87e69f><div style="position:relative;" class="vp-doc _notebook_IDEA_IDEA%E6%8F%92%E4%BB%B6" data-v-6b87e69f><div><h1 id="idea实用插件" tabindex="-1">IDEA实用插件 <a class="header-anchor" href="#idea实用插件" aria-label="Permalink to &quot;IDEA实用插件&quot;">​</a></h1><h2 id="实用插件" tabindex="-1">实用插件 <a class="header-anchor" href="#实用插件" aria-label="Permalink to &quot;实用插件&quot;">​</a></h2><h3 id="强烈推荐" tabindex="-1">强烈推荐 <a class="header-anchor" href="#强烈推荐" aria-label="Permalink to &quot;强烈推荐&quot;">​</a></h3><p>综合实用性、易用性、流行度、维护频率，精选了以下插件，简单分类为天地二品。</p><h4 id="天品插件" tabindex="-1">天品插件 <a class="header-anchor" href="#天品插件" aria-label="Permalink to &quot;天品插件&quot;">​</a></h4><blockquote><p>提高开发效率和代码质量</p></blockquote><ul><li><p>GsonFormatPlus</p></li><li><ul><li>描述：根据 json 生成对象</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/14949-gsonformatplus" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/14949-gsonformatplus</a></li></ul></li><li><p>JUnitGenerator V2.0</p></li><li><ul><li>描述：自动生成单元测试</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/3064-junitgenerator-v2-0" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/3064-junitgenerator-v2-0</a></li></ul></li><li><p>RestfulTool</p></li><li><ul><li>描述：辅助 web 开发的工具集</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/14280-restfultool" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/14280-restfultool</a></li></ul></li><li><p>CheckStyle-IDEA</p></li><li><ul><li>描述：自动检查 Java 代码规范</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/1065-checkstyle-idea" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/1065-checkstyle-idea</a></li></ul></li><li><p>SonarLint</p></li><li><ul><li>描述：帮助你发现和修复代码的错误和漏洞</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/7973-sonarlint" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/7973-sonarlint</a></li></ul></li></ul><h3 id="代码生成类" tabindex="-1">代码生成类 <a class="header-anchor" href="#代码生成类" aria-label="Permalink to &quot;代码生成类&quot;">​</a></h3><ul><li>UUID Generator</li><li><ul><li>描述：生成随机的 UUID</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/8320-uuid-generator" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/8320-uuid-generator</a></li></ul></li><li>Randomness</li><li><ul><li>描述：生成随机值</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/9836-randomness" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/9836-randomness</a></li></ul></li><li>Auto filling Java call arguments</li><li><ul><li>描述：通过快捷键自动补全函数的调用参数</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/8638-auto-filling-java-call-arguments/" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/8638-auto-filling-java-call-arguments/</a></li></ul></li><li>GenerateAllSetter</li><li><ul><li>描述：快速生成调用对象 setter 方法的代码</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/9360-generateallsetter" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/9360-generateallsetter</a></li></ul></li><li>GenerateSerialVersionUID</li><li><ul><li>描述：一键为实现 Serializable 接口的类生成 SerialVersionUID</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/185-generateserialversionuid/" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/185-generateserialversionuid/</a></li></ul></li><li>GsonFormatPlus</li><li><ul><li>描述：根据 json 生成对象</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/14949-gsonformatplus" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/14949-gsonformatplus</a></li></ul></li><li>Easy Javadoc</li><li><ul><li>描述：快速生成 Javadoc 文档</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/12977-easy-javadoc" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/12977-easy-javadoc</a></li></ul></li><li>JavaDoc</li><li><ul><li>描述：生成 Javadoc 文档</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/7157-javadoc" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/7157-javadoc</a></li></ul></li><li>Json2Pojo</li><li><ul><li>描述：根据 JSON 生成 POJO，根据 POJO 生成 JSON</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/8533-json2pojo" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/8533-json2pojo</a></li></ul></li><li>JUnitGenerator V2.0</li><li><ul><li>描述：自动生成单元测试</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/3064-junitgenerator-v2-0" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/3064-junitgenerator-v2-0</a></li></ul></li><li>Jindent - Source Code Formatter</li><li><ul><li>描述：根据自定义模板来生成 javadoc 注释</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/8309-jindent--source-code-formatter" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/8309-jindent--source-code-formatter</a></li></ul></li></ul><h3 id="功能提效类" tabindex="-1">功能提效类 <a class="header-anchor" href="#功能提效类" aria-label="Permalink to &quot;功能提效类&quot;">​</a></h3><h4 id="源码阅读" tabindex="-1">源码阅读 <a class="header-anchor" href="#源码阅读" aria-label="Permalink to &quot;源码阅读&quot;">​</a></h4><ul><li><p>Call Graph</p></li><li><ul><li>描述：生成调用关系图，便于查看源码</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/12304-call-graph" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/12304-call-graph</a></li></ul></li><li><p>Jump to Line</p></li><li><ul><li>描述：支持跳转到任意行进行调试</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/14877-jump-to-line" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/14877-jump-to-line</a></li></ul><p>BrowseWordAtCaret</p></li><li><ul><li>描述：快速在相同单词间进行跳转</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/201-browsewordatcaret" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/201-browsewordatcaret</a></li></ul></li></ul><h4 id="代码规范" tabindex="-1">代码规范 <a class="header-anchor" href="#代码规范" aria-label="Permalink to &quot;代码规范&quot;">​</a></h4><ul><li>CheckStyle-IDEA</li><li><ul><li>描述：自动检查 Java 代码规范</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/1065-checkstyle-idea" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/1065-checkstyle-idea</a></li></ul></li><li>SonarLint</li><li><ul><li>描述：帮助你发现和修复代码的错误和漏洞</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/7973-sonarlint" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/7973-sonarlint</a></li></ul></li><li>FindBugs-IDEA</li><li><ul><li>描述：帮你找出代码中潜藏的 Bug</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/3847-findbugs-idea" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/3847-findbugs-idea</a></li></ul></li><li>MetricsReloaded</li><li><ul><li>描述：代码复杂度分析</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/93?pr=idea" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/93?pr=idea</a></li></ul></li></ul><h4 id="格式处理" tabindex="-1">格式处理 <a class="header-anchor" href="#格式处理" aria-label="Permalink to &quot;格式处理&quot;">​</a></h4><p>CamelCase</p><ul><li><p>描述：快速字符串格式转换工具，如驼峰式</p><p>官网：<a href="https://plugins.jetbrains.com/plugin/7160-camelcase" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/7160-camelcase</a></p><p>Json Parser</p></li><li><ul><li>描述：验证和格式化 Json 字符串的工具</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/10650-json-parser" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/10650-json-parser</a></li></ul></li></ul><h4 id="代码检索" tabindex="-1">代码检索 <a class="header-anchor" href="#代码检索" aria-label="Permalink to &quot;代码检索&quot;">​</a></h4><ul><li><p>OnlineSearch</p></li><li><ul><li>描述：选择文本后支持不同搜索引擎进行搜索</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/8298-onlinesearch/" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/8298-onlinesearch/</a></li></ul></li><li><p>CodeSearch</p></li><li><ul><li>描述：快捷地打开搜索引擎进行搜索</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/12578-codesearch" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/12578-codesearch</a></li></ul></li></ul><h1 id="实用工具插件" tabindex="-1">实用工具插件 <a class="header-anchor" href="#实用工具插件" aria-label="Permalink to &quot;实用工具插件&quot;">​</a></h1><h2 id="中文ide⭐" tabindex="-1">中文IDE⭐ <a class="header-anchor" href="#中文ide⭐" aria-label="Permalink to &quot;中文IDE⭐&quot;">​</a></h2><blockquote><p>能让IDE变成中文，插件</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.1.30/202301131627584.png" alt="image-20230113162749531" style="zoom:80%;"><h2 id="markdown" tabindex="-1">Markdown <a class="header-anchor" href="#markdown" aria-label="Permalink to &quot;Markdown&quot;">​</a></h2><blockquote><p>IDEA官方出品的一款Markdown插件，支持编辑Markdown文件并进行预览，对于习惯了使用IDEA的小伙伴还是非常方便的。</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlhSYrEwpia8l7mZfw4brKD5mANypYGu2SWCBRSwYaIjGu9HXvKic8IREw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><p>使用它来编辑Markdown文件最方便的地方在于，可以直接使用IDEA提供的各种快捷键，无需适应一套新的快捷键。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBljic6qwhPNoSTGCjxNianhia6ic39u35HghCWwtibOzeRicPQb0iaxcdxFwpqg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><h2 id="vue-js" tabindex="-1">Vue.js <a class="header-anchor" href="#vue-js" aria-label="Permalink to &quot;Vue.js&quot;">​</a></h2><blockquote><p>Vue.js支持插件，写过前端的朋友肯定用过，可以根据模板创建<code>.vue</code>文件，也可以对Vue相关代码进行智能提示。</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBl9iaNaTfDQUCDcR43h5aribBztOzDualgIpYdGntTiaRUfM1EoSxL0gwxw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><p>启用该插件后，可以根据模板新建<code>.vue</code>文件。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlFsXkSxp67XWSgABUWUIcAibH8IUdrJZx9BxESLUu5WZP7GXfaTlNZFw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>当我们在标签中写入以<code>v-</code>开头的代码时，会提示Vue中的相关指令。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlEAj01VUxdujpticur0qiaA3x3AVBiceZH1ftKyfgPgiaeqBLhDyFAvq29Q/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><h2 id="maven-helper" tabindex="-1">Maven Helper <a class="header-anchor" href="#maven-helper" aria-label="Permalink to &quot;Maven Helper&quot;">​</a></h2><blockquote><p>解决Maven依赖冲突的好帮手，可以快速查找项目中的依赖冲突，并予以解决！</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlicYefCSEsyYMK2j5FcTKMYnt836CeqL1yRutGAevRicFG2kHU6MTgicLg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>我们可以通过<code>pom.xml</code>文件底部的<code>依赖分析</code>标签页查看当前项目中的所有依赖。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlTUBhgpny25IqvT02IHsHQ5c6X50o1RB81ysQLgJ1K7y6TzSPVMyriaw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>通过<code>冲突</code>按钮我们可以筛选出所有冲突的依赖，当前项目<code>guava</code>依赖有冲突，目前使用的是<code>18.0</code>版本。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlfYu50cEeNUKxjleOPI8DxAPzq7lcbjdmuubQXBohEuPwVBz2hcRqHw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>选中有冲突的依赖，点击<code>Exclude</code>按钮可以直接排除该依赖。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlenONwRZyEOoeAfSRv8R0uVjwlwDBq50RFMtejelURpQNdy66EtA6Iw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>同时<code>pom.xml</code>中也会对该依赖添加<code>&lt;exclusion&gt;</code>标签，是不是很方便啊！</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBll30iaJ9EORvU6DXHg4m7gngqzMX0Gia1F9uR23YgDs4tbNZkbT9jwFIA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="docker" tabindex="-1">Docker <a class="header-anchor" href="#docker" aria-label="Permalink to &quot;Docker&quot;">​</a></h2><blockquote><p>IDEA官方提供的Docker插件，已内置，支持远程Docker环境的镜像和容器管理，同时支持使用Docker Compose实现批量部署。</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlGsFWzOoTAfEJSGNTbmBD1iam9cqiaxMibSicMrNcJhh5ibT10KQ5g9wE1Vg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>通过它能自动打包应用的镜像，jar包会直接上传到远程服务器并打包成镜像，具体使用可以参考<a href="https://mp.weixin.qq.com/s?__biz=MzU1Nzg4NjgyMw==&amp;mid=2247500482&amp;idx=1&amp;sn=713a30c88cea125f4768e6a0df939600&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">IDEA官方Docker插件的使用</a> 。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlQ4Bs1SeuDFrU7PueOWRt5BibNHyiaiaDb22l642micNsGexLFkyxDhiccRw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><h2 id="arthas-idea" tabindex="-1">arthas idea <a class="header-anchor" href="#arthas-idea" aria-label="Permalink to &quot;arthas idea&quot;">​</a></h2><blockquote><p>基于IDEA开发的Arthas命令生成插件，支持Arthas官方常用的命令，比如 watch、trace、ognl static、ognl bean method、field、monitor、stack 、tt等命令。</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlK1eMSZF4jRDqly6Vjzvjj3Rib39u4pRUHibwzjehnkfODv4QEdrezjww/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>直接打开右键菜单，选择Arthas命令即可快速生成命令，具体使用可以参考<a href="https://mp.weixin.qq.com/s?__biz=MzU1Nzg4NjgyMw==&amp;mid=2247499910&amp;idx=1&amp;sn=05c3177e74009bcaf309d5abd27ec4d5&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">Arthas使用教程</a> 。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlS8LoIBZp0BTGIVLpgbclrWbu1CNDIMqN17hmCyUOwibbhaCbengEv4A/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><h2 id="alibaba-cloud-toolkit" tabindex="-1">Alibaba Cloud Toolkit <a class="header-anchor" href="#alibaba-cloud-toolkit" aria-label="Permalink to &quot;Alibaba Cloud Toolkit&quot;">​</a></h2><blockquote><p>CloudToolkit是阿里出品的一款IDEA插件，通过它我们可以更方便地实现自动化部署，其内置的终端工具和文件上传功能，即使用来管理服务器也非常方便！这款IDEA插件不仅功能强大，而且完全免费！</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlJdjdaFicmuCOC1obIhs6WEQj8NEcUMCFMdx9Fe9T36gwElkx7gNDAJg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>配置好服务器后，通过它可以一件打包上传到服务器，然后自动执行指定的脚本。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlTKaYjA7bMp7A1803UVlS1aLsnuKNrCiakiaBAEOpPAOUyA434cRaVddw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>其内置了一个终端工具，提示还挺全的，如果你想在IDEA里管理Linux服务器，不妨可以试试，具体使用可以参考<a href="https://mp.weixin.qq.com/s?__biz=MzU1Nzg4NjgyMw==&amp;mid=2247500584&amp;idx=1&amp;sn=14ab8fa74ed8391a5cb91449f699123a&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">CloudToolkit插件的使用</a> 。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBl6gYB5jLiaTPTeF00S6B1C3EUYvuWEsgk2jgRVyGCkk7qyOzSAkRfBWA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><h2 id="sequencediagram-时序图" tabindex="-1">SequenceDiagram 时序图 <a class="header-anchor" href="#sequencediagram-时序图" aria-label="Permalink to &quot;SequenceDiagram 时序图&quot;">​</a></h2><blockquote><p>SequenceDiagram是一款能根据代码生成时序图的插件，还支持在时序图上直接导航到对应代码以及导出为图片或PlantUML文件。</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBladZ7ajl62kD6cCQmjNYOJrBdwicickyeudiafhqY08Wiaeicwz9FlhH0ltw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>下面是一张使用SequenceDiagram制作的时序图，还是非常不错的，具体使用可以参考<a href="https://mp.weixin.qq.com/s?__biz=MzU1Nzg4NjgyMw==&amp;mid=2247502397&amp;idx=1&amp;sn=f741bdcb205cc3304ae754fe9403ae7e&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">SequenceDiagram插件的使用</a> 。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlwzNy7WJtHzr7ibwQeJcwV2fnnicuqrUwlKUJrVJfqWRXq1rUyjRY4oLQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><h2 id="jclasslib-bytecode-viewer-可视化字节码" tabindex="-1">jclasslib bytecode viewer 可视化字节码 <a class="header-anchor" href="#jclasslib-bytecode-viewer-可视化字节码" aria-label="Permalink to &quot;jclasslib bytecode viewer 可视化字节码&quot;">​</a></h2><p>可视化的字节码查看器。</p><p>使用：</p><ol><li><p>在 IDEA 打开想研究的类。</p></li><li><p>编译该类或者直接编译整个项目（ 如果想研究的类在 jar 包中，此步可略过）。</p></li><li><p>打开“view” 菜单，选择“Show Bytecode With jclasslib” 选项。</p></li><li><p>选择上述菜单项后 IDEA 中会弹出 jclasslib 工具窗口。</p></li></ol><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211231806857.png" alt="image-20221123180613753" style="zoom:80%;"><p>英文设置：在 Help -&gt; Edit Custom VM Options …，加上</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">-Duser.language</span><span style="color:#A6ACCD;">=en</span></span></code></pre></div><h2 id="javadoc" tabindex="-1">JavaDoc <a class="header-anchor" href="#javadoc" aria-label="Permalink to &quot;JavaDoc&quot;">​</a></h2><p>这是一个快速生成文档注释的插件</p><p>windows上可以通过<code>alt + insert</code> 快捷键，mac是<code>control+回车</code></p><p>可以快速生成注释模板</p><h2 id="restfultool-接口测试" tabindex="-1">RestfulTool 接口测试 <a class="header-anchor" href="#restfultool-接口测试" aria-label="Permalink to &quot;RestfulTool 接口测试&quot;">​</a></h2><p>这是一个接口测试工具</p><p>安装成功之后在<strong>右侧</strong>会有一个<code>RestfulTool</code>的选项卡，点击之后会显示出当前项目的所有请求地址</p><p>并且支持各种各样的请求类型</p><p>注意：项目启动后才能执行这些命令</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img/image-20211126220648644.png" alt="image-20211126220648644" style="zoom:50%;"><h2 id="plantuml-开源uml图" tabindex="-1">PlantUML 开源UML图 <a class="header-anchor" href="#plantuml-开源uml图" aria-label="Permalink to &quot;PlantUML 开源UML图&quot;">​</a></h2><blockquote><p>PlantUML是一款开源的UML图绘制工具，支持通过文本来生成图形，使用起来非常高效。可以支持时序图、类图、对象图、活动图、思维导图等图形的绘制。</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBl8YWWqnficZhibKnhibA95dQox91Aa4Mc7TiauVEHmnBaZ0J0xFhuaqKFDg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>下面使用PlantUML来绘制一张流程图，可以实时预览，速度也很快，具体使用可以参考<a href="https://mp.weixin.qq.com/s?__biz=MzU1Nzg4NjgyMw==&amp;mid=2247494438&amp;idx=1&amp;sn=d077f02bbe50276c9939d0c652809f4b&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">PlantUML插件的使用</a> 。</p><img src="https://mmbiz.qpic.cn/mmbiz_gif/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlnhEAwVicVJJ5kqpnrHQW7khyKQVicdbFvVuPlXwQCZXYfksLq5nbtibJA/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片" style="zoom:67%;"><h2 id="ignore" tabindex="-1">ignore <a class="header-anchor" href="#ignore" aria-label="Permalink to &quot;ignore&quot;">​</a></h2><p>我们在使用git提交项目的时候，有时候会把 .idea 文件提交上去，</p><p>这个文件只是一些历史记录，版本信息。完全不用提交。</p><p>这个时候可以使用ignore这个插件，去配置</p><p>在 File- new - .ignore File· 中选择 gitignore File(Git)</p><p>选择<code>Example user template</code>，右侧面板表示要忽略的文件，点击<code>Generate</code></p><h2 id="acejump-快速光标跳转" tabindex="-1">AceJump 快速光标跳转 <a class="header-anchor" href="#acejump-快速光标跳转" aria-label="Permalink to &quot;AceJump 快速光标跳转&quot;">​</a></h2><p>**插件下载地址：**<a href="https://plugins.jetbrains.com/plugin/7086-acejump" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/7086-acejump</a></p><p>这是一个快速光标跳转的插件，可以很大的减少我们使用鼠标的频率</p><p>可以查看他的激活快捷键 比如我的是ctrl + 分号，</p><p>激活之后，输入你想跳转的字符，比如O键，那么当前界面的O都会打上标签，再输入相应的字母跳转到对应的位置</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img/image-20211126221014362.png" alt="image-20211126221014362" style="zoom:67%;"><p>按esc退出</p><h1 id="翻译插件" tabindex="-1">翻译插件 <a class="header-anchor" href="#翻译插件" aria-label="Permalink to &quot;翻译插件&quot;">​</a></h1><h2 id="translation-翻译" tabindex="-1">Translation 翻译 <a class="header-anchor" href="#translation-翻译" aria-label="Permalink to &quot;Translation 翻译&quot;">​</a></h2><blockquote><p>一款翻译插件，支持Google、有道、阿里、百度翻译，对我们看源码时翻译注释很有帮助！</p></blockquote><p>注册翻译服务（有道智云、百度翻译开放平台、阿里云机器翻译）帐号，开通翻译服务并获取其应用ID和密钥 绑定应用ID和密钥：偏好设置（设置） &gt; 工具 &gt; 翻译 &gt; 常规 &gt; 翻译引擎 &gt; 配置…使用：鼠标选中文本，点击右键即可自动翻译成多国语言。注：请注意保管好你的应用密钥，防止其泄露。</p><p>使用有道翻译的AppID和密钥，注意只能选这两个，不然无法翻译成功，会出现AppID失效</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211232033412.png" alt="image-20221123203355315" style="zoom:80%;"><p>已经弄好的密钥</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">5fa2b6e7a47608ff</span></span>
<span class="line"><span style="color:#FFCB6B;">8S9FrYdml2j5JPoZSm5N1GhuNiAu7v2N</span></span></code></pre></div><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBl75MxQUOlTRGavHib3uLqYfibZyWvQlyDhhCgx6fT012wRugibdoEyfnOg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><p>直接选中需要翻译的内容，点击右键即可找到翻译按钮；</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlq2aN2vDS0pfvbqcVAmXf7NZ2iamFHtNzAz08Tt5I2ml8Srqbe5dVoSg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><p>直接使用<code>翻译文档</code>可以将整个文档都进行翻译；</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlLLicw4W72yROMhib9IGPsKq9wCUibVWOjaoNu58AliboLxtWy0nMaR7nmg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><p>还可以通过右上角的翻译按钮直接翻译指定内容。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBls1D1eiauqM0GjYe8hqz6mN8MnECiaVdwgdV90QvR2DkS3BzUxHMgNECA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><h1 id="样式美化插件" tabindex="-1">样式美化插件 <a class="header-anchor" href="#样式美化插件" aria-label="Permalink to &quot;样式美化插件&quot;">​</a></h1><ul><li><p>Extra Icons</p></li><li><ul><li>描述：图标美化插件，支持更多文件类型</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/11058-extra-icons" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/11058-extra-icons</a></li></ul></li><li><p>Chinese Language Pack</p></li><li><ul><li>描述：中文支持</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----</a></li></ul></li><li><p>Grep Console</p></li><li><ul><li>描述：自定义设置控制台输出颜色</li><li>官网：<a href="https://plugins.jetbrains.com/idea/plugin/7125-grep-console" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/idea/plugin/7125-grep-console</a></li></ul><p>Material Theme UI</p></li><li><ul><li>描述：美观的主题</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/8006-material-theme-ui" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/8006-material-theme-ui</a></li></ul></li><li><p>Nyan Progress Bar</p></li><li><ul><li>描述：进度条美化</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/8575-nyan-progress-bar" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/8575-nyan-progress-bar</a></li></ul></li><li><p>activate-power-mode</p></li><li><ul><li>描述：打字特效</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/8330-activate-power-mode" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/8330-activate-power-mode</a></li></ul></li><li><p>Power Mode II</p></li><li><ul><li>描述：打字特效插件升级版</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/8251-power-mode-ii" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/8251-power-mode-ii</a></li></ul></li><li><p>Rainbow Brackets</p></li><li><ul><li>描述：给括号添加彩虹色，使开发者通过颜色区分括号嵌套层级，便于阅读</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/10080-rainbow-brackets/" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/10080-rainbow-brackets/</a></li></ul></li><li><p>Background Image Plus +</p></li><li><ul><li>描述：给编辑器设置背景图片</li><li>官网：<a href="https://plugins.jetbrains.com/plugin/11247-background-image-plus-" target="_blank" rel="noreferrer">https://plugins.jetbrains.com/plugin/11247-background-image-plus-</a></li></ul></li></ul><h2 id="rainbow-brackets" tabindex="-1">Rainbow Brackets <a class="header-anchor" href="#rainbow-brackets" aria-label="Permalink to &quot;Rainbow Brackets&quot;">​</a></h2><blockquote><p>让你的括号变成不一样的颜色，防止错乱括号</p></blockquote><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak1YXXhjwEpUdwRMk7TQ74E5RKHoRQLIHktdK6RH7wngAB2P2ia2ia9ODA/640?wx_fmt=png&amp;random=0.5041575685081181&amp;random=0.1532987328489157&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak2w4wppPQsnmx5npsQGz6Z3P9OHwhkH3uW6h1caL54H6Dm6zcOiaqBvw/640?wx_fmt=png&amp;random=0.011092607708733437&amp;random=0.8508849470412256&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakcpjJdUnxiabGKg9jB6hNsDtAaTVWTPWWg79SZRXHCTpWssdiclP2icTJg/640?wx_fmt=png&amp;random=0.8551369128627908&amp;random=0.18307349839703302&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak5PdYhcEEWxPHiaOGwmjzK9KdPpicHhgLcepaZcDV5qIREJaRFT7OdDbg/640?wx_fmt=png&amp;random=0.2167273681983084&amp;random=0.24143168830860295&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="highlightbracketpair" tabindex="-1">HighlightBracketPair <a class="header-anchor" href="#highlightbracketpair" aria-label="Permalink to &quot;HighlightBracketPair&quot;">​</a></h2><blockquote><p>括号开始结尾 高亮显示</p></blockquote><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakYCZ1wXrfDtTFUibiaqF0kGjRaHM5VnTLm0I0NPibPHU3gURQ5dlprvsYg/640?wx_fmt=gif&amp;random=0.17730185433697554&amp;random=0.557687594480772&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak3XyqCdloNMBic8oPMEjCguwbgW9E6P507CJY3ju6bwzafsN3iagxvCoA/640?wx_fmt=gif&amp;random=0.9780227990257273&amp;random=0.13600666162510433&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak58Bjibjx4d8jZ93NGkU8tBBicOGHTk5iajusH9qWYAfEicN9gCTJuwQOKw/640?wx_fmt=jpeg&amp;random=0.4843059390678286&amp;random=0.9318323445496517&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="grep-console" tabindex="-1">Grep Console <a class="header-anchor" href="#grep-console" aria-label="Permalink to &quot;Grep Console&quot;">​</a></h2><blockquote><p>一款帮你分析控制台日志的插件，可以对不同级别的日志进行不同颜色的高亮显示，用来按关键字搜索日志内容</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlt0UicM6HsmSsObXe13S3ricyKEXbcMyzHJxeku8BekvyfSt9nZK4gSMQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>当项目打印日志的时候，可以发现不同日志级别的日志会以不同颜色来显示。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlFTy1JsmSmRQfEDx1W6G7udfuru0vwKHqsQJDvhJxb17gG735c2QEicg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>如果你需要修改配色方案的话，可以通过<code>Tools</code>打开该插件的配置菜单。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlHF3ySBBPTHzgpibUK9Bqy6YdRVgeBJdeI8wwbmdoOZQz96MPWKuibxMA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>然后通过配置菜单修改配色方案。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlAuoD6sn3qKExl6YtHt1YLl3yq6lx6HPTeb2jicUS6CpYuuibCric3Mtyw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><p>可以通过在控制台右键并使用<code>Grep</code>按钮来调出日志分析的窗口。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBl2ibwGChBBeMbj8DYVRibqmpako8e6hfibXiaKy5Lkadl1ceEvVlV4ISbwg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><p>然后直接通过关键字来搜索即可。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlsI0e9IXPgicLrvAoFhLkWXkkzzEFOsNhwLGoVPEibs0iaaFcN7JCb9qMg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakENe3jWsnF7OzjIzuzCz03iaefEbvEibmaNCH6texotlNCNcHWiaRBghRw/640?wx_fmt=gif&amp;random=0.6007517689983244&amp;random=0.22265946369877798&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakT8wsRIjsbmatv7MK71nuKu97auTR8IJZ21zS9icWeib1qYuSIK6LkTHw/640?wx_fmt=png&amp;random=0.7389494623532535&amp;random=0.2976680527194131&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak9cxDvG3vql2aeXA8AMNIeYVuwGs4rB0BTiaJhdy99b6q86OTuFfMHFQ/640?wx_fmt=png&amp;random=0.5234338795394646&amp;random=0.8095968637831783&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakV3gFdsxLv5ujicQCHcQT8RTk6ncLZen7l4kkw6uMnodmc1YoewIGGmg/640?wx_fmt=png&amp;random=0.5221458363799683&amp;random=0.7503240422360682&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="material-theme-ui-⭐" tabindex="-1">Material Theme UI ⭐ <a class="header-anchor" href="#material-theme-ui-⭐" aria-label="Permalink to &quot;Material Theme UI ⭐&quot;">​</a></h2><p>IDEA主题插件</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakYZS48RI8cKaVCm7B68c3UzBJibn7OfNC3PDc56kWS6tKw1fbSbtO5LA/640?wx_fmt=png&amp;random=0.22628359642076012&amp;random=0.490949042676885&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakicb9c1GmGCUX8JlRfic5TXHOHiakOz1L0KtOJ3IfSUnWntshLqhlu7tlw/640?wx_fmt=png&amp;random=0.1677228265986177&amp;random=0.6375764819856147&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakHNF0C1ls5icevd5pAH0YJlpG4enlLLZOHZOcPibFaaaeKXPZSPtNHEIQ/640?wx_fmt=png&amp;random=0.13558795383090128&amp;random=0.16626429000238074&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniako2AeDficFGpUvEd8P5QJJs1icdvLU41UiaU5p80DLmRp6uTU19UpVTtVg/640?wx_fmt=png&amp;random=0.08902431957595813&amp;random=0.8083681200388346&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="power-mode-ii-打字效果" tabindex="-1">Power Mode II 打字效果 <a class="header-anchor" href="#power-mode-ii-打字效果" aria-label="Permalink to &quot;Power Mode II  打字效果&quot;">​</a></h2><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakfB3W8cfE1dNd2qefmO810GPcA8YAwxBNZaBc2LADgXbHaNknHkD60Q/640?wx_fmt=png&amp;random=0.9204919188540106&amp;random=0.023971305352380234&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="background-image-plus" tabindex="-1">Background Image Plus + <a class="header-anchor" href="#background-image-plus" aria-label="Permalink to &quot;Background Image Plus +&quot;">​</a></h2><blockquote><p>更换IDEA背景</p></blockquote><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakS42Rd0gThMFnkkV59wgkQLHuyXy0bC6UYGGCwFGcsibrl670EETuegQ/640?wx_fmt=png&amp;random=0.8901199245329905&amp;random=0.03710207420985956&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakIEHdoNuH08jklKx5H1eV1C47Wa8Ey8Fsa4BNZV3NEtIAlUJicIBvRZw/640?wx_fmt=png&amp;random=0.13855948066904356&amp;random=0.7714106785830557&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniaklEKuIgZyBQUepMlda8ciagG6rMHhLmvibxQB86NmaWibMv6vLyWfKWbXQ/640?wx_fmt=png&amp;random=0.598051589796885&amp;random=0.5535179682621179&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakNusSUK1qESXVG41B5m86OoJd2QFaUJ9vV2icozgbEBgG04ufLHOXvcA/640?wx_fmt=png&amp;random=0.09032829734285497&amp;random=0.1578852388256533&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="codeglance-缩放图" tabindex="-1">CodeGlance 缩放图 <a class="header-anchor" href="#codeglance-缩放图" aria-label="Permalink to &quot;CodeGlance 缩放图&quot;">​</a></h2><p>用过sublime的同学对这个功能一定很熟悉，它是一个迷你缩放图插件</p><p>当代码过长的时候可以使用这个插件，相比如下拉框，这个插件更加的直观和方便</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img/image-20211126170237433.png" alt="image-20211126170237433" style="zoom:67%;"><h1 id="代码简化插件⭐" tabindex="-1">代码简化插件⭐ <a class="header-anchor" href="#代码简化插件⭐" aria-label="Permalink to &quot;代码简化插件⭐&quot;">​</a></h1><h2 id="lombok" tabindex="-1">Lombok <a class="header-anchor" href="#lombok" aria-label="Permalink to &quot;Lombok&quot;">​</a></h2><blockquote><p>Lombok目前已经是开发Java应用的标配了，不仅SpringBoot默认支持它，连IDEA也内置了Lombok插件，无需安装即可使用。Lombok是一款Java代码功能增强库，通过Lombok的注解，你可以不用再写getter、setter、equals等方法，Lombok将在编译时为你自动生成。</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlrcOxS75lZy3qbCro7BaYb4IpTf8vj5Pwykvx3aqfibluHHRD103JL8A/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>举个例子，当我们给一个类添加@Getter和@Setter注解后；</p><div class="language-java"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">/**</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"> * 修改订单费用信息参数</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"> * Created by macro on 2018/10/29.</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"> */</span></span>
<span class="line"><span style="color:#89DDFF;">@</span><span style="color:#C792EA;">Getter</span></span>
<span class="line"><span style="color:#89DDFF;">@</span><span style="color:#C792EA;">Setter</span></span>
<span class="line"><span style="color:#C792EA;">public</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">class</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">OmsMoneyInfoParam</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#89DDFF;">@</span><span style="color:#C792EA;">ApiModelProperty</span><span style="color:#89DDFF;">(</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">订单ID</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">)</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">private</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">Long</span><span style="color:#A6ACCD;"> orderId</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#89DDFF;">@</span><span style="color:#C792EA;">ApiModelProperty</span><span style="color:#89DDFF;">(</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">运费金额</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">)</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">private</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">BigDecimal</span><span style="color:#A6ACCD;"> freightAmount</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#89DDFF;">@</span><span style="color:#C792EA;">ApiModelProperty</span><span style="color:#89DDFF;">(</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">管理员后台调整订单所使用的折扣金额</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">)</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">private</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">BigDecimal</span><span style="color:#A6ACCD;"> discountAmount</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#89DDFF;">@</span><span style="color:#C792EA;">ApiModelProperty</span><span style="color:#89DDFF;">(</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">订单状态：0-&gt;待付款；1-&gt;待发货；2-&gt;已发货；3-&gt;已完成；4-&gt;已关闭；)</span></span>
<span class="line"><span style="color:#C3E88D;">    private Integer status;</span></span>
<span class="line"><span style="color:#C3E88D;">}</span></span></code></pre></div><p>Lombok就会为我们自动生成所有属性的Getter和Setter方法，无需我们再手写，具体使用可以参考<a href="https://mp.weixin.qq.com/s?__biz=MzU1Nzg4NjgyMw==&amp;mid=2247488419&amp;idx=1&amp;sn=8fcd89fe0727a5b3fc4179db3aaf9891&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">Lombok的使用</a> 。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlu9zcNf5QqSmx0cXHmLuZ1k1m55fU5vfmh6mqLibHslwibysxqts4q87w/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><h2 id="gsonformatplus" tabindex="-1">GsonFormatPlus <a class="header-anchor" href="#gsonformatplus" aria-label="Permalink to &quot;GsonFormatPlus&quot;">​</a></h2><blockquote><p>一款能根据JSON字符串自动生成实体类的插件，支持Lombok。这是一个将Json字符串自动转换成实体类的插件。安装完插件之后，在实体类中使用快捷键 &#39;alt+insert&#39;，mac是‘control + 回车’选择GsonFormat在实体类中任意空白位置，鼠标右键-------Generate--------GsonFromatPlus</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlyFrlxYYTnPjlZTy9uMHTuiakKPHhybwkHWIJmMj4LxmPb6icbSzhf5nw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>选择类名，右键生成，输入JSON字符串即可快速生成对应实体类。</p><img src="https://mmbiz.qpic.cn/mmbiz_gif/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlGTiazT8iaKybqw4yibPDsS4UAZDicMQQt8icib2IVoibrj6208qA8aAkXuNQQ/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片" style="zoom:67%;"><p>再点击OK，就生成对应的字段了，它自动给加上了lombok注解，生成如下</p><div class="language-java"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#F78C6C;">import</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">lombok</span><span style="color:#89DDFF;">.</span><span style="color:#C792EA;">Data</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#F78C6C;">import</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">lombok</span><span style="color:#89DDFF;">.</span><span style="color:#C792EA;">NoArgsConstructor</span><span style="color:#89DDFF;">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">@</span><span style="color:#C792EA;">NoArgsConstructor</span></span>
<span class="line"><span style="color:#89DDFF;">@</span><span style="color:#C792EA;">Data</span></span>
<span class="line"><span style="color:#C792EA;">public</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">class</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">User</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">private</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">String</span><span style="color:#A6ACCD;"> name</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#C792EA;">private</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">Integer</span><span style="color:#A6ACCD;"> age</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span></code></pre></div><h2 id="json-parser" tabindex="-1">Json Parser <a class="header-anchor" href="#json-parser" aria-label="Permalink to &quot;Json Parser&quot;">​</a></h2><blockquote><p>一款简单小巧的JSON格式化插件，还在使用在线工具格式化JSON？试试这款IDEA插件吧！</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlOeIu0XmvzSrCcmJpZA8qOu8euHkTcY5WZ8FoxK2cVicfhRBicPa9jMSg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>直接打开右侧面板，输入JSON字符串即可快速格式化，支持折叠显示。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlvjMBen7kuNjiaDDfYYkOlL84tqTcHtkWcy9bGMhCY0F70NUeQTnXgiaw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><h2 id="string-manipulation" tabindex="-1">String Manipulation <a class="header-anchor" href="#string-manipulation" aria-label="Permalink to &quot;String Manipulation&quot;">​</a></h2><blockquote><p>一款专业处理字符串的插件，支持各种格式代码命名方式的切换、支持各种语言的转义和反转义、支持字符加密、支持多个字符的排序、对齐、过滤等。总之功能很强大，有需要字符串操作时，可以试试它。变量名使用驼峰形式、常量需要全部大写等等，编码解码等等。选中需要处理的内容后，按快捷键Alt + M，即可弹出工具功能列表。后面的具体功能也可以使用相应的数字或字母，而不需要鼠标点击。</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlbCFZOHwa6DRa7C42whehr3zL7uME9xqYqVzlr0fepgNLZicyu1Lia8UA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>选中需要处理的字符串，右键打开菜单即可开始使用。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlmRibnCScXqtJ3agAMfpHkfE208yttMbkNib373iaZMjllc4yhIcib3adhg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><h2 id="google-java-format-代码自动格式化" tabindex="-1">google-java-format 代码自动格式化 <a class="header-anchor" href="#google-java-format-代码自动格式化" aria-label="Permalink to &quot;google-java-format  代码自动格式化&quot;">​</a></h2><blockquote><p>这个插件的优点在于不需要手动快捷键去格式化代码</p><p>需要按ctrl+alt+L来进行格式化代码</p></blockquote><h2 id="robopojogenerator-json" tabindex="-1">RoboPOJOGenerator JSON <a class="header-anchor" href="#robopojogenerator-json" aria-label="Permalink to &quot;RoboPOJOGenerator JSON&quot;">​</a></h2><blockquote><p>GsonFormat也可以，但是好久没更新过了</p></blockquote><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak6SkrzJUM3QhD0eCLWb1OxZxe0HUeJqBrYduLW6XKOfDlrWbxDuNEgw/640?wx_fmt=gif&amp;random=0.08998436902648055&amp;random=0.268127665615121&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakudGUPiauFQKHcxuG4ic8hp3qvEic1quT76rYv54cNgTzqHfdYEOfnN2Gg/640?wx_fmt=png&amp;random=0.1924556723428168&amp;random=0.1975229225932067&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>GsonFormat可以将json格式的字符串自动转换成java类 [{&quot;name&quot;:&quot;赵云&quot;,&quot;age&quot;:26},{&quot;name&quot;:&quot;刘备&quot;,&quot;age&quot;:33},{&quot;name&quot;:&quot;关羽&quot;,&quot;age&quot;:100}]</p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/wJvXicD0z2dXaic4Ec2yqnGic0Vye3Q9Bo7ia6fPboEvIcer8yBQyw2uKL8ESrMRbr1YBXPlYk3ibUb19Ztx2R8ic4xw/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><h2 id="camelcase-多种命名格式之间切换" tabindex="-1">CamelCase 多种命名格式之间切换 <a class="header-anchor" href="#camelcase-多种命名格式之间切换" aria-label="Permalink to &quot;CamelCase 多种命名格式之间切换&quot;">​</a></h2><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakCAx5D0NsSkiauics3EuwzYEXyicewEZ7yMVrlxdfZ4dS42icW8Qqtm626w/640?wx_fmt=gif&amp;random=0.6461272931100015&amp;random=0.9109677013519868&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><p>快捷键如果忘记的话可以在 IDEA 的菜单栏的 Edit 找到</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakH8w59YzZ4xibf7jtjLnIMF6SwDojSWYyTfnAIRjQ169z2zDuMRicPibFA/640?wx_fmt=png&amp;random=0.9401580943612455&amp;random=0.9771799764636409&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakHSce6LEB85jtMoOETjhOwR2zrNaLR60E39XX9qxBkpDAicjv1SXPk0A/640?wx_fmt=png&amp;random=0.9706290577262688&amp;random=0.24960376926784633&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="generateserialversionuid-生成uuid" tabindex="-1">GenerateSerialVersionUID 生成UUID <a class="header-anchor" href="#generateserialversionuid-生成uuid" aria-label="Permalink to &quot;GenerateSerialVersionUID 生成UUID&quot;">​</a></h2><p>最后推荐一个插件-<strong>GenerateSerialVersionUID</strong>，安装插件之后，可以使用 IDEA Generate 功能，自动生成随机的<strong>serialVersionUID</strong>。</p><p>如果你们经常使用 Dubbo，这个插件可以省下很多事。</p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/LEFcpfxrbq6GN932uicD7rU53aSNMjWtulb6SMbefYg6uzcH6Dpjrf9chfmNLfWbRQyykZS8ianZPE8VicRlCTxNg/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><h2 id="generateallsetter" tabindex="-1">GenerateAllSetter <a class="header-anchor" href="#generateallsetter" aria-label="Permalink to &quot;GenerateAllSetter&quot;">​</a></h2><blockquote><p>自动调用所有 Setter 函数（可填充默认值）</p></blockquote><p>实际开发中还有一个非常常见的场景： 我们创建一个对象后，想依次调用 Setter 函数对属性赋值，如果属性较多很容易遗漏或者重复。按alt+enter即可</p><p>这个插件可以快速的对实体类生成set代码，这样就不用我们一个一个的去手动set了</p><p>使用方法也非常简单，当我们new一个对象的时候，在对象上使用快简介&quot;alt + 回车&quot;</p><p>选择<code>Generate all setter with default value</code>就可以自动生成所有set方法啦</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img/image-20211126215537641.png" alt="image-20211126215537641" style="zoom:67%;"><div class="language-java"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">//就会这样给创建set方法</span></span>
<span class="line"><span style="color:#A6ACCD;">c</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">setCronId</span><span style="color:#89DDFF;">(</span><span style="color:#F78C6C;">0</span><span style="color:#89DDFF;">);</span></span>
<span class="line"><span style="color:#A6ACCD;">c</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">setCron</span><span style="color:#89DDFF;">(</span><span style="color:#89DDFF;">&quot;&quot;</span><span style="color:#89DDFF;">);</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211231807204.png" alt="image-20221123180731097" style="zoom:80%;"><p>可以使用这 GenerateAllSetter 提供的功能，快速生成对象的所有 Setter 函数（可填充默认值），然后自己再跟进实际需求设置属性值。</p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak9aoHSgHe0yFD70MYvRNcTeBsyUW7GwXIhdM0ErNguCe69ibdySaHv3g/640?wx_fmt=gif&amp;random=0.6900002411157722&amp;random=0.299584573316821&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakQyQthPXicQoepibSVNXS1WkymKAvCicoztOsvYTNmsicQDkMb5Lu3huX9Q/640?wx_fmt=gif&amp;random=0.24088022015572363&amp;random=0.6109440163923017&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakGoD4wKiaicl3nJXgibRHHcqrKKMRWT8m4On8JyJP41oiare5iafINHWdtiaQ/640?wx_fmt=gif&amp;random=0.7298776171238368&amp;random=0.1435373967578144&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><h2 id="maven-helper-1" tabindex="-1">Maven Helper <a class="header-anchor" href="#maven-helper-1" aria-label="Permalink to &quot;Maven Helper&quot;">​</a></h2><blockquote><p>方便maven项目解决jar冲突</p></blockquote><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakR4E26ia0Pu9kZQU1zX4Yxq2AUkeMzNGl5HAxQicC7ic61MyTMMlB4c1OQ/640?wx_fmt=png&amp;random=0.2863338954020882&amp;random=0.46843633763481063&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak9ic2ib43TgqyqIDrWwBAQec31tarQK1EQX78lqHk6kYDyYBWKaOHM1jA/640?wx_fmt=png&amp;random=0.5223471476576602&amp;random=0.7981804157607895&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakx7u6naN4xP3eia77U2EjLeWYxLFey0talcbE1wD9N8poyKWQwnFgc5g/640?wx_fmt=png&amp;random=0.4333186904409019&amp;random=0.8795419161161389&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakgVII5DWF9YWwq6XTL7pzQm4YpOlyAV3tur7vsQg1ictvx9Tkn6qLhXw/640?wx_fmt=png&amp;random=0.05362104202343554&amp;random=0.04854990591769082&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakhSk7gib9Glicog65mSxt69vySfcibLkG9OyCR8sNJfKZiaK4hJn7MQaW6w/640?wx_fmt=png&amp;random=0.7485235765506004&amp;random=0.10239851076553719&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="properties-to-yaml-converter" tabindex="-1">Properties to YAML Converter <a class="header-anchor" href="#properties-to-yaml-converter" aria-label="Permalink to &quot;Properties to YAML Converter&quot;">​</a></h2><p>将<code>Properties</code> 配置文件一键转换成<code>YAML</code>文件，很实用的一个插件。</p><p>注意：要提前备份原<code>Properties</code> 文件。</p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/wJvXicD0z2dXaic4Ec2yqnGic0Vye3Q9Bo7IsGYheYmSZqlEHwoadFGjXB9iaemWDSQic081O6iaKfUEPzAqZhSWOhrA/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/wJvXicD0z2dXaic4Ec2yqnGic0Vye3Q9Bo7nGBBEV39yCS5DxGkkut6T12XLmcJcWLl6z0obHTfvaNkxySCdsXD3Q/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><h2 id="mybatis-log-plugin" tabindex="-1">MyBatis Log Plugin <a class="header-anchor" href="#mybatis-log-plugin" aria-label="Permalink to &quot;MyBatis Log Plugin&quot;">​</a></h2><p>只要控制台有sql打印，我们的mybatis sql log 就会自动帮大家把sql和参数进行拼装，先把MyBatis Log Plugin找到并显示在控制台旁边。</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/wJvXicD0z2dXaic4Ec2yqnGic0Vye3Q9Bo7VtkGdmQoJDNlFetQeopaMd4yLO89pDHjeuJIhFc3y2icoLP9uPgRLiaA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"><img src="https://mmbiz.qpic.cn/mmbiz_gif/wJvXicD0z2dXaic4Ec2yqnGic0Vye3Q9Bo7DIF8tjwyzI4aG1QALQsHUsLROOBYMdl4ov0EPibEGQx0ySCDRE1OIJQ/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><h2 id="mybatisx" tabindex="-1">MyBatisX <a class="header-anchor" href="#mybatisx" aria-label="Permalink to &quot;MyBatisX&quot;">​</a></h2><blockquote><p>MybatisX是一款基于IDEA的快速开发插件，由MyBatis-Plus团队开发维护，提示很全功能也很强大。支持xml和Mapper接口之间的跳转，自带图形化的代码生成器，可以通过类似JPA的方式，直接根据方法名称生成SQL实现。</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlRSnbvRnJ6vrsrmNfKxvqEG0aaiaVtNenOE1Yt2iboZeetpebEAQolpqQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>我们点击Mapper接口方法左侧的图标可以直接跳转到xml中对应的SQL实现，在xml点击左侧图标也可以直接跳转到Mapper接口中对应的方法。</p><img src="https://mmbiz.qpic.cn/mmbiz_gif/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBllgAxqJeaiaFwqiagnreeFlMom4rnBoK4wiatKRR9LZ5KYxMZPP2mKhiaXQ/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片" style="zoom:67%;"><p>当我们创建符合JPA规范的方法时，能直接生成SQL实现无需手写，MyBatisX的功能很强大，详细使用可以参考<a href="https://mp.weixin.qq.com/s?__biz=MzU1Nzg4NjgyMw==&amp;mid=2247502551&amp;idx=1&amp;sn=5017e6bf5b9aaabebcad8fb9f3fc7d89&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">MybatisX插件的使用</a> 。</p><img src="https://mmbiz.qpic.cn/mmbiz_gif/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlNAWUBhNuZicAku4pRLa2mC9CQfOq7R9deJV7QcpBXko0eQoGPbeEjvQ/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片" style="zoom:67%;"><h2 id="mapstruct-support" tabindex="-1">MapStruct support <a class="header-anchor" href="#mapstruct-support" aria-label="Permalink to &quot;MapStruct support&quot;">​</a></h2><blockquote><p>MapStruct是一款基于Java注解的对象属性映射工具，使用的时候我们只要在接口中定义好对象属性映射规则，它就能自动生成映射实现类，不使用反射，性能优秀。</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlprQib0Hd2mQCIdyULh1LqNgv4Kibv5SlIM8gp3GOMFbfKibp4wELic7aow/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>当我们使用它的IDEA插件时，他能自动提示映射对象所包含的属性，并且在点击属性时能跳转到对应属性，具体使用可以参考<a href="https://mp.weixin.qq.com/s?__biz=MzU1Nzg4NjgyMw==&amp;mid=2247494988&amp;idx=1&amp;sn=d5c1f888ce670ff5197c6a00cd63f966&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">MapStruct的使用</a> 。</p><img src="https://mmbiz.qpic.cn/mmbiz_gif/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlcWfhI0ficFe4bia9aqSxzqpTOMEhyV06FsLOXbOtueC00icsmUibt9ziaqA/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片" style="zoom:67%;"><h2 id="gsonformatplus-1" tabindex="-1">GsonFormatPlus <a class="header-anchor" href="#gsonformatplus-1" aria-label="Permalink to &quot;GsonFormatPlus&quot;">​</a></h2><p>根据 json 生成对象。使用：使用alt + s 或 alt + insert调取。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211231946941.png" alt="image-20221123194600847" style="zoom:80%;"><div class="language-json"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C792EA;">name</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">tom</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">,</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C792EA;">age</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">18</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">,</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C792EA;">gender</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">man</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">,</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C792EA;">hometown</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#A6ACCD;">		</span><span style="color:#89DDFF;">&quot;</span><span style="color:#FFCB6B;">province</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">河北省</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">,</span></span>
<span class="line"><span style="color:#A6ACCD;">		</span><span style="color:#89DDFF;">&quot;</span><span style="color:#FFCB6B;">city</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">石家庄市</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">,</span></span>
<span class="line"><span style="color:#A6ACCD;">		</span><span style="color:#89DDFF;">&quot;</span><span style="color:#FFCB6B;">county</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">正定县</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span><span style="color:#89DDFF;">}</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span></code></pre></div><h2 id="restfulfastrequest" tabindex="-1">RestfulFastRequest <a class="header-anchor" href="#restfulfastrequest" aria-label="Permalink to &quot;RestfulFastRequest&quot;">​</a></h2><blockquote><p>RestfulFastRequest号称是IDEA版本的Postman，它是一个功能强大的Restful API工具包插件，可以根据已有的方法快速生成接口调试用例。它有一个漂亮的界面来完成请求、检查服务器响应、存储你的API请求和导出API请求，该插件能帮助你在IDEA内更快更高效地调试API！</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlhlovriaS7HTHwe47wicD87tFCsFZWBOh7eDpm1pkuqktIUuJr6UsLxFw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>下面是使用RestfulFastRequest调试API接口的一张效果图，用起来还是非常方便的，具体使用可以参考<a href="https://mp.weixin.qq.com/s?__biz=MzU1Nzg4NjgyMw==&amp;mid=2247499671&amp;idx=1&amp;sn=58d81623c3177b7ba95497c8e1cb2dce&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">RestfulFastRequest插件的使用</a> 。</p><img src="https://mmbiz.qpic.cn/mmbiz_gif/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlcYfwTA6vHMprJdicIe9u4l3IKyusMjZJO6ibCPMhzotRsc6OQDHophXg/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片" style="zoom:67%;"><h1 id="其他实用插件" tabindex="-1">其他实用插件 <a class="header-anchor" href="#其他实用插件" aria-label="Permalink to &quot;其他实用插件&quot;">​</a></h1><h2 id="codeglance-缩略图" tabindex="-1">CodeGlance 缩略图 <a class="header-anchor" href="#codeglance-缩略图" aria-label="Permalink to &quot;CodeGlance  缩略图&quot;">​</a></h2><p>这个插件可以向查看缩略图一样，帮助我们快速切换到所要的代码区域，而不用疯狂地拖拽一遍去找。</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakkW0QibtC1Eicem0g5jEpaLfFFicQvdlT29hWuQUvPaRJO0OvR0ykicNl2Q/640?wx_fmt=png&amp;random=0.25958645384643186&amp;random=0.6229212228414351&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="statistic-项目信息统计" tabindex="-1">Statistic 项目信息统计 <a class="header-anchor" href="#statistic-项目信息统计" aria-label="Permalink to &quot;Statistic 项目信息统计&quot;">​</a></h2><blockquote><p>一款代码统计工具，可以用来统计当前项目中代码的行数和大小。所有类型的文件的信息</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlwHFE4P9gAgD1wNzXwlAB02mKLxNlLQEJyB8HUkfibYyDicJhApBHYFng/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><p>我们可以通过顶部菜单中的<code>View-&gt;Tool Windows-&gt;Statistic</code>按钮开启该功能。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlOqm7weHhqbutOMFRXwSdyvgJcyRXvbOib5cgeHG11FhneEcxibb6d8NA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><p>此时就可以看到我们项目代码的统计情况了，比如我的开源项目<code>mall</code>中<code>java</code>代码大小为<code>2818kB</code>，行数为<code>85645</code>。</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlkJmGxwVE7bibQaYeG1pychk8MKn9yWiaq1Uka8ciaB50MGmN8lGMwg4SQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakBnuzgyibJyUSNb74x6NU10pJKW7vuZiaw3NWl39CkgURnqkMpDuQRSrQ/640?wx_fmt=png&amp;random=0.8240975088955307&amp;random=0.7976345690060718&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniaktSNjiaS1icBQeVXZSvau7b8dibop9c5TBRMQDyWATDwpHwH45XPia6uiaHw/640?wx_fmt=png&amp;random=0.8902966977744198&amp;random=0.8418973875958711&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h1 id="github插件" tabindex="-1">Github插件 <a class="header-anchor" href="#github插件" aria-label="Permalink to &quot;Github插件&quot;">​</a></h1><h2 id="octotree" tabindex="-1">octotree <a class="header-anchor" href="#octotree" aria-label="Permalink to &quot;octotree&quot;">​</a></h2><p>作为全球最大的男性交友网站-GitHub，在浏览代码的时候用户体验并不算太好，尤其是从一个目录跳转到另一个目录的时候，非常麻烦。octotree插件就能很好地解决上述问题。</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/rcsf4tGt6JiaTuWGBo1iaod0TfyhCgESQcvtAshK96K2EjQX4F9FWe3yF3Y38Iic0jAJjnELPnKNwUZypxgah8zfQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片">最重要的是octotree插件开源的。</p><p>官网地址 「<a href="https://www.octotree.io" target="_blank" rel="noreferrer">https://www.octotree.io</a>」</p><p>开源地址 「<a href="https://github.com/ovity/octotree%E3%80%8D" target="_blank" rel="noreferrer">https://github.com/ovity/octotree」</a></p><p>那么octotree只支持Chrome吗？当然不是，octotree支持多款浏览器，包括Firfor、Opera、Safari。</p><p>代码目录树，提高阅读代码体验，提高github访问速度，简洁快速。</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/rcsf4tGt6JiaTuWGBo1iaod0TfyhCgESQc3d4hUAiax3bYiaG8QaLDckkpKeFMmeInJyHtxYq4RM8YBzNiaJicdZXAgQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="gitzip" tabindex="-1">GitZip <a class="header-anchor" href="#gitzip" aria-label="Permalink to &quot;GitZip&quot;">​</a></h2><p>github的下载速度很慢，当然这个也是有办法解决的，有时候我们想下载其中一个文件或者文件夹怎么办？</p><p>GitZip 可以帮助我们下载仓库中的部分文件，并且支持下载单个文件夹。如何使用呢？</p><p>鼠标定位到我们需要下载的某个项目子文件夹上，在空白区域双击：</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/rcsf4tGt6JiaTuWGBo1iaod0TfyhCgESQcmnZpWe4OpnPz4QSaA38WqEuURRazNLoB6tm6BocoobSibh0VfbhvcGA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>然后点击下载即可！</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/rcsf4tGt6JiaTuWGBo1iaod0TfyhCgESQcicp1XonJ7ibwwYUUsWIOaPZ8ibWZZ1NvXicwWvTveDQXmAZibWPXiaKzuPzw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="octolinker" tabindex="-1">octolinker <a class="header-anchor" href="#octolinker" aria-label="Permalink to &quot;octolinker&quot;">​</a></h2><p>可让您更有效地浏览 GitHub 上的代码。它将特定语言的模块加载语句（如 include、require 与 import）转换为链接，根据语言将您重定向到引用的文件或外部网站（如手册页或其他服务）。</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/rcsf4tGt6JiaTuWGBo1iaod0TfyhCgESQclribTVmvtaMYJARzmLriarrZ8F9ZfWLwicRBwI0qyoiayGCSQqI5uepLLg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>只需单击一下，就可以比以前更快地浏览GitHub存储库。OctoLinker利用GitHub API获取存储库的树结构以链接相关文件。</p><h1 id="刷题插件" tabindex="-1">刷题插件 <a class="header-anchor" href="#刷题插件" aria-label="Permalink to &quot;刷题插件&quot;">​</a></h1><h2 id="leetcode-editor" tabindex="-1">Leetcode Editor <a class="header-anchor" href="#leetcode-editor" aria-label="Permalink to &quot;Leetcode Editor&quot;">​</a></h2><blockquote><p>可以在IDEA中在线刷题。上班摸鱼属实方便，表面上我在干活，实际上我在刷算法题。</p></blockquote><p>账号：17315118673</p><p>密码：315217ren</p><p>这是一个上班摸鱼神器，也是一个可以在IDEA中刷算法题目的插件，有很多题目供我们学习，表面在写代码，其实是在刷题。每道题都有很详细的解题思路</p><p>安装完重启idea后右侧会生成leetcode栏，点击进入，最上面第一个是登录，左边第三个是刷新题库。</p><p>详细功能参考：<a href="https://github.com/shuzijun/leetcode-editor/blob/master/README_ZH.md" target="_blank" rel="noreferrer">https://github.com/shuzijun/leetcode-editor/blob/master/README_ZH.md</a></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img/image-20211126160238264.png" alt="image-20211126160238264" style="zoom:67%;"><p>正常写代码运行即可点击对应题目，鼠标右键，可以查看open solution查看答案</p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakhfa6UVfAab15vkX7VT51CkDO6m0a9EcaqhpnR9g7RLJpsPJUAaqyjw/640?wx_fmt=gif&amp;random=0.09579633205252858&amp;random=0.9531172649973727&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><h1 id="代码规范插件" tabindex="-1">代码规范插件 <a class="header-anchor" href="#代码规范插件" aria-label="Permalink to &quot;代码规范插件&quot;">​</a></h1><p>大家好，我是鱼皮。随着业务的发展，系统会越来越庞大，原本简单稳定的功能，可能在不断迭代后复杂度上升，潜在的风险也随之暴露，导致最终服务不稳定，造成业务价值的损失。而为了减少这种情况，其中一种比较好的方式就是提高代码质量，比如通过代码审查，从而降低错误风险，但是，代码审查难度大，代码缺陷、漏洞不易发现，且审查工作随着代码量增加而增加，审查效率低。</p><p>检查代码规范的话，直接使用Alibaba Java Coding Guidelines就可以了。找 BUG 的话，使用PMD、Findbugs、SonarLint`相互补充。PMD自定义能力强，用来自定义项目BUG规则非常好用。Findbugs找 BUG 能力很强，我们拿找到的BUG给新员工培训也很好。SonarLint规则丰富，比 Findbugs 能覆盖到更全的场景。</p><h2 id="alibaba-java-coding-guidelines" tabindex="-1">Alibaba Java Coding Guidelines <a class="header-anchor" href="#alibaba-java-coding-guidelines" aria-label="Permalink to &quot;Alibaba Java Coding Guidelines&quot;">​</a></h2><h3 id="_1、整体介绍" tabindex="-1">1、整体介绍 <a class="header-anchor" href="#_1、整体介绍" aria-label="Permalink to &quot;1、整体介绍&quot;">​</a></h3><p>Alibaba Java Coding Guidelines 专注于 Java 代码规范，目的是让开发者更加方便、快速规范代码格式。该插件在扫描代码后，将不符合规约的代码按 Blocker、Critical、Major 三个等级显示出来，并且大部分可以自动修复，它还基于 Inspection 机制提供了实时检测功能，编写代码的同时也能快速发现问题所在。</p><p>阿里巴巴规约扫描包括：</p><p>可以切换中英文</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakiaPz4h5OwibzR6XIO4n2cQme76lXibZEpjibnmegVSFNU77ibsEKtic2VZCg/640?wx_fmt=png&amp;random=0.8270991538411019&amp;random=0.928265015889125&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>有什么不符合阿里巴巴Java开发手册的都会显示出来</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak1JFpUHoDiba5rTVibmwRB7oQmSudHARO9CSL8ibah9rE46NibhToks6AJA/640?wx_fmt=png&amp;random=0.7971839683194837&amp;random=0.524252425294597&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakvXV1gqfboQI5lNxOuy6NZOFgJAgjSrwl9uOickL7GktgNYiapwALum7Q/640?wx_fmt=png&amp;random=0.6933616018665147&amp;random=0.4649710788503634&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li>OOP 规约</li><li>并发处理</li><li>控制语句</li><li>命名规约</li><li>常量定义</li><li>注释规范</li></ul><h3 id="_2、安装步骤" tabindex="-1">2、安装步骤 <a class="header-anchor" href="#_2、安装步骤" aria-label="Permalink to &quot;2、安装步骤&quot;">​</a></h3><p><code>File &gt; Settings &gt; Plugins &gt; Marketplace</code>搜索 “<code>Alibaba Java Coding Guidelines</code>”，按照提示进行安装，然后重启即可。</p><h3 id="_3、使用说明" tabindex="-1">3、使用说明 <a class="header-anchor" href="#_3、使用说明" aria-label="Permalink to &quot;3、使用说明&quot;">​</a></h3><p><strong>3.1、运行方式</strong></p><p>（1）可以 Tools &gt; 阿里编码规约 &gt; 编码规约扫描</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMgVxfD52AZQGCib36ncnfDyqiae0IrzHqTq2DK8VTQsH5yLF3qKoGCAibg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>（2）在编辑界面或者项目区域点击右键，在右键菜单中选择“编码规约扫描”即可：</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMib4DPdjDDxNYoNmzvNpiaM2ME1ET7I69GCyenOCrEAezCzqaDpfL3NjQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><strong>3.2、菜单功能</strong></p><ul><li><strong>编码规约扫描</strong>：开始扫描代码</li><li><strong>打开/关闭实时检测功能</strong>：实时检测代码，一般机器性能比较好的话可以开启这项功能</li><li><strong>切换语言至英文</strong>：中英文切换</li></ul><p><strong>3.3、运行结果</strong></p><p>扫描完成后显示结果如下，我们可以看到扫描结果主要分为 Blocker（阻挡者）、Critical（严重问题）、Major（主要的）三个大类，它们表示的是问题的严重程度，严重程度由高到低为：<code>Blocker &gt; Critical &gt; Major</code>，至于每一类中都会包含什么样的问题，图中的内容已经说明了一切。</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMYCTQLeTXhFw062neb2b4pdLPDCCntgONicqAIb5RxWdRcMSkaI3y1eQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>选中其中的一个问题项目，会出现如下内容（如果当前鼠标点击的是最终项，右边区域显示的是其它的内容，后面会再讲到）：</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMWOFoHAwheNGicHialvMUud9LZwAPpwjIrqwKdJWnN3qfKWczY2Y3qmQA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>（1）指定区域搜索同一类问题：</p><p>当点击 ③ 处的按钮时，会弹出如下按钮：</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYM1fxNj2xicYickNLfaCDucibNNOBibOCNhvnZxL9uEibJlGPeKiaDqrwR8NLg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>这里选择扫描区域，来扫描鼠标选中的同类问题。如果按照默认选择，那么运行后的结果就如下图所示：</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMiaVub6Uia75JpbretExibHicPgw1O3kewKNAduLHqJ0I629njv8hdicwoAQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>这里我们可以看到，显示了整个 Project 中的所有该类的问题。</p><p>（2）预览具体的不规范代码：</p><p>如果点击的是最终的问题点或者问题所在的类文件，那显示的就是如下界面，预览该处不规范的代码。</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMm1rk5ibzD53ooXMZib9mdwd4kIkLRVJewKwICAh9J5ia1jYqhlDpWToUg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><strong>3.4、工具栏功能介绍</strong></p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMj7qsq2X4I2RIRs22ucyicNcSXcRiaciacZibNricUIgPYdZRib5ibJev0LEUA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li><code>Rerun Inspection</code>：重新运行一次扫描</li><li><code>Close</code>：关闭真个 AJCG 面板</li><li><code>Expand All</code>：展开结果的树状结构，整个结果是树状结构的。</li><li><code>Collapse All</code>：收起结果的树状结构</li><li><code>Go Pre Problem</code>：选择上一个问题</li><li><code>Go Next Problem</code>：选择下一个问题</li><li><code>Help</code>：帮助</li><li><code>Group by Serverity</code>：（不知道如何描述）</li><li><code>Group by derectory</code>：按目录分组/按类名分组间切换</li><li><code>Filter resoled items</code>：过滤掉已经解决的项</li><li><code>Autoscroll to Source</code>：自动滚动到源码</li><li><code>Export</code>：导出，可以导出为 XML 和 HTML 两种格式</li><li><code>Edit Settings</code>：编辑设置</li></ul><p>当我们违反手册规约时，该插件会自动检测并进行提示。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBllPEFROzcu5qrSDa9LuxjAxwKj8qu12NtrfAH0Nth9kZN1ex5Rvjkmw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>同时提供了一键检测所有代码规约情况和切换语言的功能。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlaVTeCAiafKbZnOlIDicwWicDyORsHtCRZCy0b1YNz5SB33aSwCMOBw48g/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>如果你想修改某条规约的检测规则的话，可以通过设置的<code>Editor-&gt;Inspections</code>进行修改。</p><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBl6fGJSkhDapyHsKEiakicsphgxIPpAI7VnzOnTlicVM2BIic6MraPx5nLqA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><h2 id="_2、checkstyle" tabindex="-1">2、CheckStyle <a class="header-anchor" href="#_2、checkstyle" aria-label="Permalink to &quot;2、CheckStyle&quot;">​</a></h2><h3 id="_1、整体介绍-1" tabindex="-1">1、整体介绍 <a class="header-anchor" href="#_1、整体介绍-1" aria-label="Permalink to &quot;1、整体介绍&quot;">​</a></h3><p>CheckStyle 侧重检查编码格式和代码风格规范，如命名规范、Javadoc 注释规范、空格规范、size 度量（如过长的方法）、重复代码、多余 Imports 等，从而有效约束开发人员更好地遵循代码编写规范。Checkstyle 主要是文法层面的代码编写规范的分析，对 bug 几乎没什么发现能力。</p><p>Checkstyle 插件中默认内置有 2 个执行代码检查的配置文件（Sun Checks 和 Sun Checks），但是这两个文件检查的非常详细严格，即使优秀的开源项目也会检查出来有非常多的错误告信息，所以需要导入我们自定义的配置文件。</p><h3 id="_2、安装步骤-1" tabindex="-1">2、安装步骤 <a class="header-anchor" href="#_2、安装步骤-1" aria-label="Permalink to &quot;2、安装步骤&quot;">​</a></h3><p>通过<code>File &gt; Settings &gt; Plugins &gt; Marketplace</code>搜索 “CheckStyle”，按照提示进行安装，然后重启即可。</p><h3 id="_3、使用说明-1" tabindex="-1">3、使用说明 <a class="header-anchor" href="#_3、使用说明-1" aria-label="Permalink to &quot;3、使用说明&quot;">​</a></h3><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYM1ELp8StpK9ve2UVcjlQHHSs2mFgolxtk2NZYvicg8cNzdvo11SCWNEA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>可以看到基本都是一些缩进啥的编码规范，可以不用太关注</p><h2 id="_3、pmd" tabindex="-1">3、PMD <a class="header-anchor" href="#_3、pmd" aria-label="Permalink to &quot;3、PMD&quot;">​</a></h2><h3 id="_1、整体介绍-2" tabindex="-1">1、整体介绍 <a class="header-anchor" href="#_1、整体介绍-2" aria-label="Permalink to &quot;1、整体介绍&quot;">​</a></h3><p>PMD 侧重面向安全编码规则，且具备一定的数据流分析和路径分析能力，能力比 CheckStyle 稍微强点，并且 PMD 支持自定义规则，PMD 可以直接使用的规则包括以下内容：</p><ul><li><strong>潜在的 bug</strong>：空的<code>try/catch/finally/switch</code>语句</li><li><strong>未使用的代码（Dead code）</strong>：未使用的变量、参数、私有方法等</li><li><strong>可选的代码</strong>：<code>String/StringBuffer</code>的滥用</li><li><strong>复杂的表达式</strong>：不必须的 if 语句、可被 while 替代的 for 循环</li><li><strong>重复的代码</strong>：拷贝/粘贴代码意味着拷贝/粘贴 bugs</li><li><strong>循环体创建新对象</strong>：尽量不要在循环体内实例化新对象</li><li><strong>资源关闭</strong>：Connect，Result，Statement 等使用之后确保关闭掉</li></ul><h3 id="_2、安装步骤-2" tabindex="-1">2、安装步骤 <a class="header-anchor" href="#_2、安装步骤-2" aria-label="Permalink to &quot;2、安装步骤&quot;">​</a></h3><p>通过<code>File &gt; Settings &gt; Plugins &gt; Marketplace</code>搜索 “<code>PMDPlugin</code>”，按照提示进行安装，然后重启即可</p><h3 id="_3、使用说明-2" tabindex="-1">3、使用说明 <a class="header-anchor" href="#_3、使用说明-2" aria-label="Permalink to &quot;3、使用说明&quot;">​</a></h3><p>参考文章：<a href="http://wjhsh.net/andy-songwei-p-11830812.html" target="_blank" rel="noreferrer">http://wjhsh.net/andy-songwei-p-11830812.html</a></p><p><strong>3.1、运行方式</strong></p><p>（1）从 Tools 菜单中启动：</p><p>通过<code>Tools &gt; Run PMD</code>可以看到如下的界面，如果通过该方式启动，扫描的范围就是整个项目中的文件了。</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMFgV4bDKhS1OFgjzzpTib5H8TfsuOiap7X4JFiaNllGMicWKiaicSI4YiaUxYQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ul><li><strong>Pre Defined</strong>：预定义的规则，也就是插件自带的检测规则。后面展开的列表中列出了所有的规则列表，想扫描哪一种类型的问题，点击即可。其中“All”表示使用所有的规则。</li><li><strong>Custom Rules</strong>：自定义的检测规则，PMD 允许用户根据需要自定义检查规则，默认这里是不可点击的，需要在设置中导入自定义规则文件后方可选择。</li></ul><p>（2）从右键菜单中启动：</p><p>在文件或者编辑器中点击右键，也可以看到“Run PMD”选项，如果通过该方式启动， 检测范围取决于鼠标或光标当前所选中的区域。</p><p><strong>3.2、运行结果</strong></p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMYztK6jDVxvL8ia5eZ7Q11kXJWB7icSA7SPHVsibzCtVB6kTVZl3zlPn6Q/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>运行后会出现如上所示的面板，左边工具栏，鼠标停留在上面会提示其功能；右边显示了检测结果，当点击具体某一问题项时，会跳转到对应的源码中。</p><p><strong>3.3、配置检测规则</strong></p><p>通过<code>File &gt; Settings &gt; Other Settings &gt; PMD</code>可以打开检测规则的设置界面：</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYM512YrHKjaZAZAJwb5OZ2KUDhfiaianHsN9Jcpcu19ICbXwmax8ibwNBRA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>在 “RuleSets（规则设置）” 界面可以管理自定义的检测规则。因为在实际工作中，可能需要根据实际情况自定义检测规则，就可以通过这里导入，如果要使用它，需要在启动 PMD 进行检测时选择该自定义规则。</p><p>点击“Options”选项卡，在其中可以配置一些检测规则选项：</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMYrcMsZMJWibCIa7UiaThqRy2tyvLubl70Pqzpfl8ES4u0LiaoK75r9ibNg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>其中重点需要留意的是“Skip TestSource”这一项，因为在项目中有不少 Android Studio 自动生成的测试代码，如下所示，选择上述选项后可以将其过滤掉。</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMaRU27uvMbI22kob7bGE7icOSPShPcqqO5MpoePDStRJ4klYXpdpySWA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="_4、findbugs" tabindex="-1">4、FindBugs <a class="header-anchor" href="#_4、findbugs" aria-label="Permalink to &quot;4、FindBugs&quot;">​</a></h2><h3 id="_1、整体介绍-3" tabindex="-1">1、整体介绍 <a class="header-anchor" href="#_1、整体介绍-3" aria-label="Permalink to &quot;1、整体介绍&quot;">​</a></h3><p>FindBugs 侧重于发现代码中存在的 bug，如运行时错误检测（空指针检查、未合理关闭资源、字符串相同判断错（==，而不是 equals）等），它可以简单高效全面地帮助我们发现程序代码中存在的 bug 以及潜在隐患，针对各种问题，它提供了简单的修改意见供我们参考</p><h3 id="_2、安装步骤-3" tabindex="-1">2、安装步骤 <a class="header-anchor" href="#_2、安装步骤-3" aria-label="Permalink to &quot;2、安装步骤&quot;">​</a></h3><p>通过<code>File &gt; Settings &gt; Plugins &gt; Marketplace</code>搜索 “FindBugs”，按照提示进行安装，然后重启即可</p><h3 id="_3、使用说明-3" tabindex="-1">3、使用说明 <a class="header-anchor" href="#_3、使用说明-3" aria-label="Permalink to &quot;3、使用说明&quot;">​</a></h3><p>FindBugs 可以分析单个文件、包下面的所有文件、整个 module 下的文件、整个 project 下的文件，右键想要分析的文件名/包名<code>/module</code>名<code>/project</code></p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYM0oOZAAUXF8zkAnzXeES9sicnia1jONaO4L36Cb4O2fQdQSWl91gD8icQg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>分析完之后就会出现结果面板</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMNajHSiaBmx7avNl0EdCicWAzx2z4VH14Rmpgsn3o2J0PC4rL86iaSfJtQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>点击对应的 item 在右边会定位到具体的代码，这是根据提示进行处理修改就行</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMAxiagLndo5bzxLgotDngsK8dTwibZwz8FGjpglTmaOFNeiaiaUoJ3ZjItw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h3 id="_4、附-常见的错误信息" tabindex="-1">4、附：常见的错误信息 <a class="header-anchor" href="#_4、附-常见的错误信息" aria-label="Permalink to &quot;4、附：常见的错误信息&quot;">​</a></h3><p><strong>4.1、Bad practice 代码坏习惯</strong></p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYM8DHRMGJCeflqbwvnhuWaRsaaFN36UXn8q4LcUF3zx3UOC9DpAl1SIQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片">图片</p><p><strong>4.2、Dodgy code 糟糕的代码</strong></p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYM5bG42jicaHhrjRV0azrvcZ2ROo7XSMicdhkqNww2wiaUol9CFXccicbfdg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片">图片</p><p><strong>4.3、Internationalization 代码国际化相关</strong></p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMQppBhTriclyVicWYIiaNUfJ5b5bELnbFMucjKuGVylgAKkAX4r8AgVmzA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片">图片</p><p><strong>4.4、Performance 代码性能相关</strong></p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMloRaB8RnC6TbU7PwBTgTriaU85wsLKMaAkOf14zkWtiaYGHdenruj5Uw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片">图片</p><p>4.5、Experimental：</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/iaIdQfEric9TxgEK95UEAG37sYRWWRZKheTx0c5KtbH8bvias7M3l4d4JBUsFHzC68icRMVn0p8ac3ctW1Irg5FCLw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><strong>4.6、Malicious code vulnerability 恶意破坏代码相关</strong></p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYM0gNibD7icmbFTKZ9zWqqfGGNfia8lNfe2SX0nbbR8FuR7oxJic6vyjTQAg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><strong>4.7、Multitreaded correctness 多线程代码正确性相关</strong></p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMnl5XZdwvpXuZictCq06YmVhhgia6Ob4JLgCiclILmAqNaG2xs5w6bytGQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><strong>4.8、Correctness 代码正确性相关</strong></p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMv1U6uic6JZhBOHtxeF5pzgfYVzOmKJLHO54QXD8PFdJV3f1jq2RhZTw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="_5、sonarlint" tabindex="-1">5、SonarLint <a class="header-anchor" href="#_5、sonarlint" aria-label="Permalink to &quot;5、SonarLint&quot;">​</a></h2><h3 id="_1、整体介绍-4" tabindex="-1">1、整体介绍 <a class="header-anchor" href="#_1、整体介绍-4" aria-label="Permalink to &quot;1、整体介绍&quot;">​</a></h3><p>sonar 比<code>Findbugs</code>高了一个层级，它不仅关注常规静态 BUG，还关注到了如代码质量、包与包、类与类之间的依赖情况，代码耦合情况，类、方法、文件的复杂度，代码中是否包含大量复制粘贴的代码，关注的是项目代码整体的健康情况。sonar 有两种使用方式：插件和客户端，sonar 的插件名称为<code>sonarLint</code>。</p><h3 id="_2、安装步骤-4" tabindex="-1">2、安装步骤 <a class="header-anchor" href="#_2、安装步骤-4" aria-label="Permalink to &quot;2、安装步骤&quot;">​</a></h3><p>通过<code>File &gt; Settings &gt; Plugins &gt; Marketplace</code>搜索 “SonarLint”，按照提示进行安装，然后重启即可</p><h3 id="_3、使用说明-4" tabindex="-1">3、使用说明 <a class="header-anchor" href="#_3、使用说明-4" aria-label="Permalink to &quot;3、使用说明&quot;">​</a></h3><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMM0OibVKhYIWfq2qej9y6084obv3MbvIvekqk1XzE17DtZZYjiaXdRbhA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>右键项目或者文件进行如上图所示操作，执行之后可以看到如下信息，如果代码中有不合理的地方会在 report 中显示，同时点击错误的地方在右边会给出建议的修改供参考。</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMe69JgPNmkt0KlZtVpavX1w3ia4GxZyyZtzr6jErztviajrfibj3Nicsb0g/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h3 id="_4、配置-sonarlint-服务端" tabindex="-1">4、配置 SonarLint 服务端 <a class="header-anchor" href="#_4、配置-sonarlint-服务端" aria-label="Permalink to &quot;4、配置 SonarLint 服务端&quot;">​</a></h3><p><strong>4.1、配置 Sonar 服务器</strong></p><p><code>sonarLint</code>插件的使用场景是自用自审，但 sonar 也提供了平台版本，使用场景则是他审，sonar 平台的搭建就不在这篇文章介绍了，感兴趣的读者可以自己上网查看，我们这里主要介绍如何在<code>sonarLint</code>插件中配置关联 sonar 平台服务器的工程，进行本地检查：</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMibe0RnmL00DKp4G7RMkxSfCiaibsLIA1vVwdE5odS1eoEdib1PziapPzUMg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>点击新增按钮，输入<code>Configuration Name</code>，配置<code>sonarlint</code>服务器的地址，然后下拉框选择<code>Login/Password</code>，输入<code>sonarlint</code>服务器的账号密码</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYM4YMPOIicYMHDbamNpnib13bEkpyv4RMXccnD8WmE72A3xnCiaTr034XPQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><strong>4.2、具体 Sonar 工程配置</strong></p><p>配置完服务器之后，需要针对具体工程进行配置，点击<code>connection</code>下拉框，选择上面配置好的服务器连接，然后点击<code>Search in list</code>，找到对应的工程：</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYM0ODURNsZCtZcU0DKhCGDkn5I9xqXnbJARfy4ICaIhgW29p4lBpicHtw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><strong>4.3、使用 SonarLint 检查</strong></p><p>配置完上面两步之后，接下来就可以选择要进行检查的类或者目录进行<code>sonarlint</code>检查了（跟第 3 点的使用方式一致），同时，在 commit 代码的时候，勾选 “<code>Perform Sonarlint analysis</code>”，会针对你要提交的代码进行 sonarlint 检查</p><p><img src="https://mmbiz.qpic.cn/sz_mmbiz_png/knmrNHnmCLHVbfaHnYsttmMjmgYicdiaYMZZ74Ria632182XFqu27PBHicvAibz1szFOLvUiadVRk7aLYPxz84ThEWwQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h1 id="代码提示插件⭐" tabindex="-1">代码提示插件⭐ <a class="header-anchor" href="#代码提示插件⭐" aria-label="Permalink to &quot;代码提示插件⭐&quot;">​</a></h1><h2 id="阿里云智能ai编码插件" tabindex="-1">阿里云智能AI编码插件 <a class="header-anchor" href="#阿里云智能ai编码插件" aria-label="Permalink to &quot;阿里云智能AI编码插件&quot;">​</a></h2><p>阿里云智能编码插件（Alibaba Cloud AI Coding Assistant）是一款AI编程助手，提供代码智能补全和代码示例搜索能力，帮你更快更高效地写出高质量代码。</p><h3 id="_1-安装插件" tabindex="-1">1 安装插件 <a class="header-anchor" href="#_1-安装插件" aria-label="Permalink to &quot;1 安装插件&quot;">​</a></h3><p>版本要求：IntelliJ IDEA（2020.1或更高版本）</p><ol><li>在IntelliJ IDEA顶部菜单栏中选择<strong>IntelliJ IDEA</strong> &gt; <strong>Preferences</strong>。</li><li>在<strong>Preferences</strong>对话框的左侧导航栏中单击<strong>Plugins</strong>。</li><li>在<strong>Plugins</strong>区域单击<strong>Marketplace</strong>。</li><li>在搜索栏中输入 <em><strong>Alibaba Cloud AI Coding Assistant</strong> 或 <strong>cosy</strong></em></li><li><strong>Search Results</strong>区域会出现 <em><strong>Alibaba Cloud AI Coding Assistant*</strong> ，单击</em><em>Install</em>*</li><li>等待下载、安装完成后，单击<strong>Restart IDE</strong>。</li></ol><p><img src="https://mmbiz.qpic.cn/mmbiz_png/VbfrPx9GoVfNNcENOwP8icianBKPka1tCIEoN9qEzSmJpcMiaCzBIc9DiadMTnq6nkM1bfh0ddGevicAl4BzA0TXchA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>IntelliJ IDEA重启后，右侧边栏有【代码示例搜索】Tab，或者代码编辑过程中出现来自Alibaba Cloud AI Coding Assistant即右侧有&quot;Cosy&quot;标识的的补全项，则说明安装成功。</p><h3 id="_2-代码智能补全" tabindex="-1">2 代码智能补全 <a class="header-anchor" href="#_2-代码智能补全" aria-label="Permalink to &quot;2 代码智能补全&quot;">​</a></h3><p>阿里云智能编码插件（Alibaba Cloud AI Coding Assistant）基于领先的深度学习模型，为你提供准确的行级代码智能补全，让编码如行云流水般自然和高效。其拥有以下三大特点：</p><p><strong>补全效率高</strong>：本插件基于深度学习模型，结合海量开源代码数据和代码上下文，为你提供行级长序列代码补全结果。相较于编辑器自带的补全能力，能让你用更少的击键写更多的代码，大幅提升编码效率。</p><p><strong>补全内容准</strong>：本插件集成创新的语法分析能力，能够提前校验深度学习模型生成的补全内容，将大量低质量，带有语法错误的补全内容拒之门外，使代码补全内容更加精准。</p><p><strong>安全轻量化</strong>：本插件所使用的深度学习模型只在你本地的机器上运行，不会分享或向其他设备上传你的代码或个人信息等数据。即使你的设备处于未联网的状态，也不会影响代码智能补全的正常使用。本插件采用更精简的模型，具有更低的资源消耗，为你带来安全轻量的智能编码体验。</p><h3 id="_3-代码文档搜索" tabindex="-1">3 代码文档搜索 <a class="header-anchor" href="#_3-代码文档搜索" aria-label="Permalink to &quot;3 代码文档搜索&quot;">​</a></h3><h4 id="代码示例搜索" tabindex="-1"><strong>代码示例搜索</strong> <a class="header-anchor" href="#代码示例搜索" aria-label="Permalink to &quot;**代码示例搜索**&quot;">​</a></h4><p>阿里云智能编码插件（Alibaba Cloud AI Coding Assistant）提供的代码示例搜索功能，让你在面对不熟悉的功能模块时，无需来回跳转页面，在IDE内即可参考海量优质的开源代码示例，为你打造沉浸式编码体验。</p><p>支持右键快捷搜索：</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/VbfrPx9GoVfNNcENOwP8icianBKPka1tCIIcA2jRd3K24bGUlk6jEh4nXjG27ibJg17wQMlK1EsRYG0t0ibnlGZmHA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>例如：搜索线程池，会有常见问题自动检索提示，点开之后可以看到实例代码及参考文档，可直接链接外网StackOverflow、CSDN博客等</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/VbfrPx9GoVfNNcENOwP8icianBKPka1tCI7w0h4BhWLrdiadEYrqzPR3CIyV3VhXTvMAkuNQaDSLGuf6DicghvVOsQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/VbfrPx9GoVfNNcENOwP8icianBKPka1tCIe5gibPXllJpjqtXXSm44GVBu2fTv98Dgu6IYsA2D4ad3EqOn6QCva4w/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h4 id="通过功能描述搜索" tabindex="-1">通过功能描述搜索 <a class="header-anchor" href="#通过功能描述搜索" aria-label="Permalink to &quot;通过功能描述搜索&quot;">​</a></h4><p>当开发者需要实现不熟悉的功能模块时，通常会通过通用搜索引擎去查找相关的开源方案，但是由于通用搜索引擎提供的结果质量参差不齐，并且无法直接从结果页的标题中快速判断是否是自己需要资料，影响了开发者的查找效率。Cosy为开发者提供了自然语言搜索能力，开发者能通过对功能的文字描述，快速的查找到相关功能的开源实现。</p><p>例如：输入将SQL查询结果导出为csv或者Excel</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/VbfrPx9GoVfNNcENOwP8icianBKPka1tCIos74yGeGjbvqHfWlicSv0EMMxbwA2KnIycUkOibBllnnSLZd773jlqiag/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="tabnine代码补全⭐" tabindex="-1">Tabnine代码补全⭐ <a class="header-anchor" href="#tabnine代码补全⭐" aria-label="Permalink to &quot;Tabnine代码补全⭐&quot;">​</a></h2><p>上面好像是说这个codota插件不能使用，被合并到那个Tabnine了（大概是这个意思，英语不好）然后就去找这个</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211281455686.png" alt="image-20221128145518613" style="zoom:80%;"><p>IDEA的自动补全功能已经很强大了，但是这个插件的自动补全功能更加强大，这是一个基于AI技术，学习了大量的开源项目，智能提示更加的可靠</p><p>还有个更强的功能是，它可以从github、stackoverflow上快速的找到你想要的相关代码</p><p>这是非常重要的功能：他能找到自己需要的代码示例</p><p>比如输入了LocalDate，发现不知道怎么用，这时全选该单词，鼠标右键，往下滑菜单，有一个蓝色图标是Get Relevant examples，点击出现如下内容</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img/image-20211126161613245.png" alt="image-20211126161613245"></p><p>同时它的代码提示很高级，提示内容很多</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211281454802.png" alt="image-20221128145436694" style="zoom:80%;"><h2 id="codota-代码智能提示" tabindex="-1">Codota 代码智能提示 <a class="header-anchor" href="#codota-代码智能提示" aria-label="Permalink to &quot;Codota 代码智能提示&quot;">​</a></h2><img src="https://mmbiz.qpic.cn/mmbiz_gif/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakSXaQcGmbeX7lEiagsB77fuAgwGRevqNpsdE7xiaGzQILQOYekOc4oCGQ/640?wx_fmt=gif&amp;random=0.7770862952317532&amp;random=0.6872195828396754&amp;wxfrom=5&amp;wx_lazy=1" alt="图片" style="zoom:80%;"><p>还可以搜索相关代码的示例</p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakwiaU9iasyg8FK1bW8fyuIibjib0kk4RrzUN4o9guso9nic0SEaM3HYiatr2A/640?wx_fmt=png&amp;random=0.5325945867114412&amp;random=0.774078906598691&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><p>Codota还包含一个网站：<a href="https://www.codota.com/code" target="_blank" rel="noreferrer">https://www.codota.com/code</a></p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak9DLR3OZI3edgsUs1v4PMCVQGulA1ACL7fN9IrR4borUs8Gh0xnA3KQ/640?wx_fmt=png&amp;random=0.8115389949927923&amp;random=0.4889135458194189&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:80%;"><h1 id="日志插件" tabindex="-1">日志插件 <a class="header-anchor" href="#日志插件" aria-label="Permalink to &quot;日志插件&quot;">​</a></h1><h2 id="grep-console-1" tabindex="-1">Grep Console <a class="header-anchor" href="#grep-console-1" aria-label="Permalink to &quot;Grep Console&quot;">​</a></h2><blockquote><p>Grep Console是一款方便开发者对idea控制台输出日志进行个性化管理的插件</p></blockquote><ul><li>支持自定义规则来过滤日志信息；</li><li>支持不同级别的日志的输出样式的个性化配置；</li></ul><h3 id="使用方法" tabindex="-1">使用方法 <a class="header-anchor" href="#使用方法" aria-label="Permalink to &quot;使用方法&quot;">​</a></h3><p>第一种：<code>file--&gt;other settings--&gt;grep console</code></p><p>第二种，项目启动后，点击控制台上左上角的小图标，也可以弹出配置界面</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202303131951083.png" alt="image-20230313195146989" style="zoom:80%;"><h3 id="重点配置" tabindex="-1">重点配置 <a class="header-anchor" href="#重点配置" aria-label="Permalink to &quot;重点配置&quot;">​</a></h3><p><strong>第一处：input filtering，这里主要是对输入到控制台的日志进行过滤</strong></p><ul><li><code>expression</code>：配置正则表达式；</li><li><code>unless expression</code>：和expression表达的意义相反；</li><li><code>whole line</code>：勾选中，表示匹配整行；</li><li><code>case insensitive</code>：表示忽略大小写</li><li><code>action</code>：表示命中正则表达式后，要作出什么样的操作，有三种：1、移除（除非前面已有其他配置项匹配不移除），实际意思是说如果前面有其他不移除的配置项已经匹配上，这里就可以不移除，否则还是要移除匹配上的内容；2、移除（匹配上就移除）；3、什么也不做；</li><li><code>continue matching</code>：勾选中，表示下一个匹配项依然可以继续匹配当前匹配项命中的行，即多个匹配项可以同时去匹配同一行日志信息；</li><li><code>clear console</code>：勾选中，表示清除控制台内除被当前配置项命中的其他日志信息，只显示与配置项匹配日志</li><li><code>soud</code>：这个就比较厉害了，命中配置项时会有声音提示，有兴趣的可以尝试一下；</li></ul><blockquote><p>注：实际使用的时候，无论我怎么写<code>expression</code>表达式都没有办法完全匹配整行，遇到空格就不匹配，只能匹配到一部分，有可能是我写的<code>expression</code>表达式不正确，也有可能插件本身在这块有问题，有知道原因的小伙伴，可以在评论区告诉我吧，非常感谢。</p></blockquote><p><strong>第二处：highlighting&amp;folding</strong></p><ul><li><code>expression</code>：配置正则表达式；</li><li><code>unless expression</code>：和expression表达的意义相反；</li><li><code>whole line</code>：勾选中，表示匹配整行；</li><li><code>case insensitive</code>：表示忽略大小写</li><li><code>continue matching</code>：勾选中，表示下一个匹配项依然可以继续匹配当前匹配项命中的行，即多个匹配项可以同时去匹配同一行日志信息；</li><li><code>bold</code>：勾选中，表示命中的日志信息粗体显示；</li><li><code>italic</code>：勾选中，表示命中的日志信息斜体显示；</li><li><code>background</code>：设置命中日志信息的背景颜色；</li><li><code>foreground</code>：设置命中日志信息的字体颜色；</li><li><code>statusbar count</code>：勾选中，可以在<code>Status Bar statistics panel</code>中显示命中日志信息的次数（找了很久，没找到这个面板，有知道的小伙伴在评论区告诉我，多谢）；</li><li><code>console count</code>：勾选中，可以在<code>Console statistics panel</code>上显示命中日志信息的次数（找了很久，没找到这个面板，有知道的小伙伴在评论区告诉我，多谢）；</li><li><code>fold</code>：勾选中，可以把命中的日志信息折叠在一起（感觉这个功能没什么用）；</li><li><code>sound</code>：这个就比较厉害了，根据配置项命中日志信息时会有声音提示，有兴趣的可以尝试一下；</li></ul><h1 id="开发必备插件" tabindex="-1">开发必备插件 <a class="header-anchor" href="#开发必备插件" aria-label="Permalink to &quot;开发必备插件&quot;">​</a></h1><h2 id="generateallsetter或entityhelper" tabindex="-1">GenerateAllSetter或EntityHelper <a class="header-anchor" href="#generateallsetter或entityhelper" aria-label="Permalink to &quot;GenerateAllSetter或EntityHelper&quot;">​</a></h2><p>**主要作用：**高效写代码</p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/yAZ9womsrh8ntx7icic297icmefa9uk2fG2X4v4s46LJGSOX6uNoIgovXGfcxX8CLNKVakPZsr0GXh4Em0enVdQhA/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><blockquote><p>当代码存在VO、DTO、BO、PO等分层实体时，常需进行对象转换，摒弃BeanCopy、MapStruct等三方工具来说，最好使用直接的GetSet操作，然而手动编写又非常枯燥无味，借助此插件便可自动生成代码，助你节约大量时间。</p></blockquote><h2 id="auto-filling-java-call-arguments" tabindex="-1">Auto filling Java call arguments <a class="header-anchor" href="#auto-filling-java-call-arguments" aria-label="Permalink to &quot;Auto filling Java call arguments&quot;">​</a></h2><p>**主要作用：**高效写代码</p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/yAZ9womsrh8ntx7icic297icmefa9uk2fG2j5bbiaXrcNgluAt5xeEkFlpI5oryJBnxRbPPKmo5pudTeAGW77NtLqw/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><p>开发中，在调用其它方法时，需要手动填充入参，当参数较多时，手动单个填充就非常浪费时间。但是绝大多数情况下，上下文代码中变量名称和该方法入参名称是一致的，安装完该插件以后，调用一个方法时，使用Alt + Enter快捷键，调出 “Auto fill call parameters” 便可自动填充入参。</p><h2 id="acejump" tabindex="-1">AceJump <a class="header-anchor" href="#acejump" aria-label="Permalink to &quot;AceJump&quot;">​</a></h2><p>**主要作用：**高效读写代码</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/yAZ9womsrh8ntx7icic297icmefa9uk2fG2CyibW1dalvpKBL8ZNkWMFxjicKaScibzaYzmibfOHM3YdvFcCqcVHicyDmw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>用鼠标，太伤自尊啦^_^ AceJump是一款能够代替鼠标的软件，安装后，可以控制在代码中跳转到任意位置。按快捷键进入<code>AceJump</code>模式后，再按任一个字符，插件就会在屏幕中把这个字符所有出现位置都打上颜色标签，我们只需再按一下标签的字符，就能把光标移到该位置上。即当要移动光标时，我们眼睛看着目标位置就行了，根本不用管当前光标位置。</p><h2 id="maven-helper-2" tabindex="-1">Maven Helper <a class="header-anchor" href="#maven-helper-2" aria-label="Permalink to &quot;Maven Helper&quot;">​</a></h2><p>**主要作用：**高效的依赖包冲突排查</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/yAZ9womsrh8ntx7icic297icmefa9uk2fG2LelK8oOibsInBaRAabicGeQZsU7o2c0RW0SYENqWuEXemcX2866VW1Zw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>呵，该插件想必业务稍具规模的团队应该都在使用，尤其微服务后。因为依赖太多二/三方包，便经常出现jar包冲突（美团时一次排包差不多折腾了两天时间。）</p><p>通常要想查看maven的依赖树就要使用Maven命令<code>maven dependency:tree</code>来查看依赖；要查看是否有依赖冲突可使用<code>mvn dependency:tree -Dverbose -Dincludes=&lt;groupId&gt;:&lt;artifactId&gt;</code>只查看关心的jar包。需要手动执行命令，且当项目比较复杂时，这个过程就比较漫长了。Maven helper就能很好地解决这个问题。</p><h2 id="git-commit-template" tabindex="-1">Git Commit Template <a class="header-anchor" href="#git-commit-template" aria-label="Permalink to &quot;Git Commit Template&quot;">​</a></h2><p>**主要作用：**规范git提交信息</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/yAZ9womsrh8ntx7icic297icmefa9uk2fG2TTWUj1IzfNeufXlx1wwue0ZwwRC0PbBfNVbibhF7zC4wYaoXJiaCUtYQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>它提供了很好的 Git 格式化模版，我们可以按照实际情况格式化提交信息。<code>Git Commit message</code>采用的是Angular规范，规范中定义的格式有Header、Body和Footer 3个内容。</p><h2 id="其他插件" tabindex="-1">其他插件 <a class="header-anchor" href="#其他插件" aria-label="Permalink to &quot;其他插件&quot;">​</a></h2><p>IDEA插件和配置有很多，个人使用频次最高的如上介绍，还有次常用的如下几款插件：</p><ul><li>CamelCase：命名风格快速转换（大小写、驼峰/下划线）；</li><li>AllFormat：可以格式化JSON、XML以及Map的toString()字符串打印；</li><li>FindBugs：提升代码质量，类Sonar或阿里规约插件；</li><li>Grep Console：可以设置不同级别log的字体颜色和背景色；</li><li>SequenceDiagram：时序图生成，便于阅读代码；</li><li>EDQL：ES的桌面GUI查询工具；</li><li>Iedis：Redis的桌面GUI工具；</li><li>Key promoter：提示快捷键（当做重复操作时，就会提示是否将其变成快捷键）；</li><li>如Lombok、Jrebel、CodeGlance等超热门常用的就不说了。</li></ul><p><code>君子生非异也，善假于物也。</code>祝愿开发伙计们早用早下班</p><p>近期，当然少不了ChatGPT相关的如Bito神器插件。</p><h1 id="快捷键插件" tabindex="-1">快捷键插件 <a class="header-anchor" href="#快捷键插件" aria-label="Permalink to &quot;快捷键插件&quot;">​</a></h1><h2 id="key-promoter-x-提示快捷键" tabindex="-1">Key promoter X 提示快捷键 <a class="header-anchor" href="#key-promoter-x-提示快捷键" aria-label="Permalink to &quot;Key promoter X 提示快捷键&quot;">​</a></h2><blockquote><p>Key Promoter X 是一款帮助你快速学习IDEA快捷键的插件，当你在IDEA中用鼠标点击某些功能时，它会自动提示你使用该功能的快捷键。它能让你更轻松地摆脱使用鼠标功能，从而只使用键盘来开发，这大概是刚开始使用IDEA的程序员最需要的插件了。</p></blockquote><img src="https://mmbiz.qpic.cn/mmbiz_png/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlpOY8zgIsFZcaA1Qlsl25BWsS1Vv4LDic5CNTRicSgAEAwIO4ZLz2wY8Q/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片" style="zoom:67%;"><p>当我们使用鼠标完成某些工作时，Key Promoter X会提示对应的快捷键，方便我们更快地掌握IDEA的快捷键。</p><img src="https://mmbiz.qpic.cn/mmbiz_gif/CKvMdchsUwlqIArsbJQpdicibHTX0MZuBlzXDPGVraPr6dgicpo9DsF06rOa4BTl8uia9ohu9WCpVbdFN5IUBGjvug/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1" alt="图片" style="zoom:67%;"><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakWYqGRs2vjYcco4zUZsicIcQFZQQxHbl9u5p8RegvjsyiaE3a3E7YGecA/640?wx_fmt=gif&amp;random=0.36666802947262433&amp;random=0.7840238548257039&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak0rmIkGiaMbbNwibe41NNOzmFgK5lX8a2DELIk52NSnaZfKkAFotX7Oxg/640?wx_fmt=png&amp;random=0.9725631627064193&amp;random=0.10450960061613501&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucDB7I8nDz0WVxAlXgVuniak71bSMeQ0olu42aPlY1SktmzVicW6YYlk8A1pX2ib6tEicFWYaAmPic3hoA/640?wx_fmt=png&amp;random=0.7282276299254165&amp;random=0.44429965493529133&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="presentation-assistant" tabindex="-1">Presentation Assistant <a class="header-anchor" href="#presentation-assistant" aria-label="Permalink to &quot;Presentation Assistant&quot;">​</a></h2><p>快捷键展示，录屏或者共享的时候，效果极佳</p><p><img src="https://mmbiz.qpic.cn/mmbiz_gif/eQPyBffYbucDB7I8nDz0WVxAlXgVuniakBgsgLZPl3maGdf8a62zoYQ3vTZMvu2Py1avbCGCuwibeJ7PBrBn8iccA/640?wx_fmt=gif&amp;random=0.4816668091034553&amp;random=0.92152441274192&amp;wxfrom=5&amp;wx_lazy=1" alt="图片"></p><h1 id="热部署插件-jrebel" tabindex="-1">热部署插件 JRebel <a class="header-anchor" href="#热部署插件-jrebel" aria-label="Permalink to &quot;热部署插件 JRebel&quot;">​</a></h1><p><code>Spring Boot</code>中的热部署相信大家用的最多的就是<code>devtools</code>，没办法，官推的。</p><p><code>JRebel</code>相对于<code>devtools</code>，个人觉得无论是加载速度还是使用便捷，<code>JRebel</code>完胜。</p><p>作为**「前辈级别」**的开发利器，<code>JRebel</code>真的值得开一章节来好好介绍下。</p><p>作为热部署界的前辈，<code>JRebel</code>依然是敌得过后浪，果然是姜还是老的辣......</p><p>希望这篇文章介绍的<code>JRebel</code>能够提高读者们的开发效率，反正我是提高了，哈哈~</p><h2 id="jrebel收费怎么破" tabindex="-1">JRebel收费怎么破？ <a class="header-anchor" href="#jrebel收费怎么破" aria-label="Permalink to &quot;JRebel收费怎么破？&quot;">​</a></h2><p>前面作者单独写过一篇激活<code>JRebel</code>的文章教程，没钱的可以去看看：<a href="https://mp.weixin.qq.com/s?__biz=MzU3MDAzNDg1MA==&amp;mid=2247485561&amp;idx=1&amp;sn=afa5533cec0bcb2379b709666a02f698&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">撸了个反向代理工具，搞一搞JRebel</a>。</p><blockquote><p><strong>「特此声明」</strong>：作者支持原版，不差钱的建议装个原版的，毕竟这么好的工具值得。</p></blockquote><p>热部署插件</p><p>这个插件真的是强烈推荐，有时候改一点点代码都要重启才能生效，很浪费时间。</p><p>有了这个插件，修改代码之后不需要重启也能生效。尤其跟别的同事联调的时候特别爽！</p><p>热部署插件，这个插件是收费的，但是可以免费激活，</p><p>访问这个<a href="https://www.guidgen.xn--comGUID-7t3kgmi98e7f1a111cny1a" target="_blank" rel="noreferrer">https://www.guidgen.com网址生成一个GUID</a>,然后将生成的ID，拼接到下面的URL中，粘贴到激活界面</p><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">https</span><span style="color:#89DDFF;">://</span><span style="color:#A6ACCD;">jrebel</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">qekang</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">com</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">你生成的ID</span></span></code></pre></div><p>激活方案网站</p><p><a href="https://www.jianshu.com/p/5666a8be025f" target="_blank" rel="noreferrer">JRebel激活方案 - 简书 (jianshu.com)</a></p><p>运行测试</p><p>看黄色火箭：第一个对应原来的绿色三角，表示运行，第二个表示debug</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img/image-20211126160804172.png" alt="image-20211126160804172"></p><p>修改文件后，控制台会跳出</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img/image-20211126161027633.png" alt="image-20211126161027633"></p><p>进行访问：发现已经更新，此时并没有重启项目</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img/image-20211126161121881.png" alt="image-20211126161121881" style="zoom:80%;"><h2 id="什么是本地热部署" tabindex="-1">什么是本地热部署？ <a class="header-anchor" href="#什么是本地热部署" aria-label="Permalink to &quot;什么是本地热部署？&quot;">​</a></h2><p>传统的开发中，项目在启动过程中代码有所改动是不会重新编译运行的，而是要关闭项目重新启动后修改的代码才会生效。</p><blockquote><p>**「本地热部署」**则是能够在项目运行中感知到特定文件代码的修改而使项目不重新启动就能生效。</p></blockquote><h2 id="什么是远程热部署" tabindex="-1">什么是远程热部署？ <a class="header-anchor" href="#什么是远程热部署" aria-label="Permalink to &quot;什么是远程热部署？&quot;">​</a></h2><p>远程热部署的<code>远程</code>两字指的是**「远程服务器」<strong>，平时开发中，只要本地代码改动了，必须要重新打包上传服务器重新启动之后才会生效，</strong>「你这样干过吗？.......」** 嗯？好像干过</p><blockquote><p>**「远程热部署」**则是本地代码改变之后，不用重新打包上传服务器重启项目就能生效，本地改变之后能够自动改变服务器上的项目代码。</p></blockquote><p>有些人听到这里懵逼了，这是什么鬼？还有这么神奇的东西...........别惊讶，就是这么神奇</p><h2 id="jrebel和devtools的区别" tabindex="-1">JRebel和devtools的区别 <a class="header-anchor" href="#jrebel和devtools的区别" aria-label="Permalink to &quot;JRebel和devtools的区别&quot;">​</a></h2><p>前辈和后辈的比较其实没什么可比性，如果不是JRebel**「收费」**了，绝对是所有程序员的首选。但还是要说说他们之间的区别，如下：</p><ol><li><code>JRebel</code>加载的速度优于<code>devtools</code></li><li>JRebel不仅仅局限于Spring Boot项目，可以用在任何的Java项目中。</li><li><code>devtools</code> 方式的热部署在功能上有限制，方法内的修改可以实现热部署，但新增的方法或者修改方法参数之后热部署是不生效的。</li></ol><h2 id="如何安装jrebel" tabindex="-1">如何安装JRebel？ <a class="header-anchor" href="#如何安装jrebel" aria-label="Permalink to &quot;如何安装JRebel？&quot;">​</a></h2><p>本地热部署只需要在<code>IDEA</code>中装一个JRebel的插件，远程热部署需要在服务器上装一个JRebel，这两种方式在上一篇文章都介绍过，不会的可以去看看：<a href="https://mp.weixin.qq.com/s?__biz=MzU3MDAzNDg1MA==&amp;mid=2247485561&amp;idx=1&amp;sn=afa5533cec0bcb2379b709666a02f698&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">撸了个反向代理工具，搞一搞JRebel</a>。</p><h2 id="如何本地热部署" tabindex="-1">如何本地热部署？ <a class="header-anchor" href="#如何本地热部署" aria-label="Permalink to &quot;如何本地热部署？&quot;">​</a></h2><p><code>JRebel</code>插件安装完成之后，将<code>IDEA</code>中的<code>自动编译</code>开启，然后找到<code>IDEA</code>中的<code>JRebel</code>的工具面板，将所需要热部署的项目或者模块勾选上即可，如下图：</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202212052101204.png" alt="image-20221205210138114" style="zoom:67%;"><blockquote><p>勾选成功之后将会在项目或者模块的<code>src/resource</code>下生成一个<code>rebel.xml</code>文件。</p></blockquote><p>此时在<code>Spring Boot</code>的主启动类上右键，将会出现以<code>JRebel</code>启动的选项，如下图：</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/19cc2hfD2rDj70QMTq21EKGeebRIiaQY5JrKWHeDLzM6ZaSiaRaT7NoTibib8M6gZEgUA59LvoygcFIiau6wKVl57jw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>当然在<code>IDEA</code>的右上角也存在启动的按钮，如下图：</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/19cc2hfD2rDj70QMTq21EKGeebRIiaQY54OjcZc8oGbm28pE1MiausPOh9O0SIfOVzYneqWNNrLIgiaSAEFtZFOvQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><blockquote><p><code>①</code>是本地启动和<code>DEBUG</code>模式启动，<code>②</code>是远程热部署的时候更新按钮。</p></blockquote><p>此时就已经配置成功了，如果勾选的项目或者模块出现了改变，按<code>CRTL+SHIFT+F9</code>则会自动重新编译加载改变的部分，不用再重新启动项目了。</p><h2 id="如何远程热部署" tabindex="-1">如何远程热部署？ <a class="header-anchor" href="#如何远程热部署" aria-label="Permalink to &quot;如何远程热部署？&quot;">​</a></h2><p>远程热部署需要在服务器上安装并激活<code>JRebel</code>，参照上篇文章：<a href="https://mp.weixin.qq.com/s?__biz=MzU3MDAzNDg1MA==&amp;mid=2247485561&amp;idx=1&amp;sn=afa5533cec0bcb2379b709666a02f698&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">撸了个反向代理工具，搞一搞JRebel</a>。</p><p>激活成功后需要设置远程连接的密码，在<code>JRebel</code>的根目录下执行以下命令：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">java</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-jar</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">jrebel.jar</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-set-remote-password</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">123456789</span></span></code></pre></div><blockquote><p>此处设置的<code>123456789</code>则是远程的密码，在<code>IDEA</code>连接服务器的时候需要。</p></blockquote><p>服务器配置成功后，在IDEA中JRebel的面板中设置远程热部署的模块，如下图：</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/19cc2hfD2rDj70QMTq21EKGeebRIiaQY5fxyvHSvDIccGBc16CQiaUibhbeibvF8tJFVlxhicHI4FvsDenkzpDGrTMw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><blockquote><p>勾选成功后，将会在<code>src/resource</code>下生成一个<code>rebel-remote.xml</code>文件。</p></blockquote><p>此时将<code>Spring Boot</code>项目打包成一个<code>Jar</code>，上传到服务器，执行以下命令启动项目：</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">nohup java -agentpath:/usr/local/jrebel/lib/libjrebel64.so  -Drebel.remoting_plugin=true -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9083 -jar xxx.jar &amp;</span></span></code></pre></div><p><code>libjrebel64.so</code>这个文件是<code>JRebel</code>的<code>lib</code>目录下的文件。</p><p><code>-Xdebug</code>之后，<code>-jar</code>之前的命令是开启远程调试的，如果不需要的可以去掉，不知道远程调试的，可以看：<a href="https://mp.weixin.qq.com/s?__biz=MzU3MDAzNDg1MA==&amp;mid=2247485512&amp;idx=1&amp;sn=9a18fa59fb2f497df4c4146e886075ab&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">惊呆了！Spring Boot还能开启远程调试~</a>。</p><blockquote><p>项目启动成功后，服务器上的配置就完成了。</p></blockquote><p>此时在IDEA中需要设置连接到刚才启动的项目，打开<code>File-&gt;setting-&gt;JRbel&amp;XRebel-&gt;JRbel Remote Servers</code>，如下图：</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/19cc2hfD2rDj70QMTq21EKGeebRIiaQY55ck2OjJoH3LMKqhZT5QjAPAzF0fqXXubfXibpr6YJtwmQAbHMLuIGcw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>步骤如下：</p><ol><li>点击<code>+</code>号添加一个服务</li><li>填写信息</li></ol><ul><li><code>server name</code>随便起个服务的名字</li><li><code>server URL</code>格式：<code>http://ip:port</code>，这里的<code>ip</code>是服务器的IP，<code>port</code>是项目端口号。</li><li>远程密码则是上文设置的<code>JRebel</code>的密码<code>123456789</code>。</li></ul><ol><li>点击<code>OK</code>，即可添加成功。</li></ol><p>以上设置成功后，点击右上角的远程部署按钮，下图中的<code>②</code>号按钮，则会自动更新服务器上已启动项目的代码使之本地修改在服务端自动生效：</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/19cc2hfD2rDj70QMTq21EKGeebRIiaQY54OjcZc8oGbm28pE1MiausPOh9O0SIfOVzYneqWNNrLIgiaSAEFtZFOvQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>在<code>JRebel Console</code>这个面板中将会打印出远程热部署更新的日志信息，如下图：</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/19cc2hfD2rDj70QMTq21EKGeebRIiaQY5cttLNm2ZalQiacpoouWSl5dz5I45HiaRFRVlxyogNL9Kgr9TWkYp9rCw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><blockquote><p>只要本地有了更改，点击远程热部署按钮，则会自动上传代码到服务器端并实时更新，不用重新启动项目。</p></blockquote><h2 id="多模块开发的一个坑" tabindex="-1">多模块开发的一个坑 <a class="header-anchor" href="#多模块开发的一个坑" aria-label="Permalink to &quot;多模块开发的一个坑&quot;">​</a></h2><p>如果是多模块开发，比如分为<code>api</code>（最终的<code>Jar</code>包），<code>core</code>（核心包），<code>service</code>（业务层的包），最终打包运行在服务器端的是<code>api</code>这个模块，其余两个模块都是属于依赖模块，虽然在<code>JRebel</code>远程热部署选项中都勾选了，但是它们的代码更改并不会在服务端生效。</p><p>这个如何解决呢？很简单，在<code>api</code>项目下的<code>rebel-remote.xml</code>文件中将其余两个模块添加进去，默认的如下：</p><div class="language-xml"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">&lt;?</span><span style="color:#F07178;">xml</span><span style="color:#C792EA;"> version</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">1.0</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C792EA;"> encoding</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">UTF-8</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">?&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">rebel-remote</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">xmlns</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">http://www.zeroturnaround.com/rebel/remote</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">id</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">xx.xx.xx.api</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">id</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">rebel-remote</span><span style="color:#89DDFF;">&gt;</span></span></code></pre></div><p>添加之后的代码如下：</p><div class="language-xml"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">&lt;?</span><span style="color:#F07178;">xml</span><span style="color:#C792EA;"> version</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">1.0</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C792EA;"> encoding</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">UTF-8</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">?&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">rebel-remote</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">xmlns</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">http://www.zeroturnaround.com/rebel/remote</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">id</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">xx.xxx.xx.api</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">id</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">id</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">xx.xx.xx.service</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">id</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">id</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">xx.xx.xx.core</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">id</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">rebel-remote</span><span style="color:#89DDFF;">&gt;</span></span></code></pre></div><blockquote><p>以上的<code>&lt;id&gt;</code>标签中指定的是模块的包名（package）。</p></blockquote><h1 id="热部署和接口分析优化" tabindex="-1">热部署和接口分析优化 <a class="header-anchor" href="#热部署和接口分析优化" aria-label="Permalink to &quot;热部署和接口分析优化&quot;">​</a></h1><h2 id="jrebel-xrebel简介" tabindex="-1">JRebel+XRebel简介 <a class="header-anchor" href="#jrebel-xrebel简介" aria-label="Permalink to &quot;JRebel+XRebel简介&quot;">​</a></h2><blockquote><p>IDEA上原生是不支持热部署的，当我们修改代码和配置文件等大部分操作时，都需要重启服务器。</p></blockquote><blockquote><p>JRebel是一款JAVA虚拟机插件，它使得JAVA程序员能在不进行重部署的情况下，即时看到代码的改变对一个应用程序带来的影响。JRebel使你能即时分别看到代码、类和资源的变化，从而跳过了构建和部署的过程，可以省去大量的部署用的时间。</p></blockquote><blockquote><p>目前对于idea热部署最好的解决方案就是安装JRebel。</p></blockquote><blockquote><p>XRebel 是不间断运行在 web 应用的交互式分析器，当发现问题会在浏览器中显示警告信息。XRebel 会实时监测应用代码的性能指标和可能会发生的问题。</p></blockquote><blockquote><p>官方文档：<a href="https://manuals.jrebel.com/jrebel/index.html" target="_blank" rel="noreferrer">https://manuals.jrebel.com/jrebel/index.html</a></p></blockquote><h2 id="安装jrebel-xrebel" tabindex="-1">安装JRebel/XRebel <a class="header-anchor" href="#安装jrebel-xrebel" aria-label="Permalink to &quot;安装JRebel/XRebel&quot;">​</a></h2><p><strong>1.通过IDEA插件仓库查询JRebel即可，这俩个插件是绑定在一起下载的，如图。</strong></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6rk3Q9Chu2fwRIGtaTEcwCILXMtIIsONkKjibG7EaZWqKQ3WfcwmhbzAw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><strong>2.由于该插件为收费，我们需要对插件进行激活</strong></p><ul><li>依次进入<code>help-&gt;Jrebel-&gt;Activation</code></li><li>服务器地址：<code>https://jrebel.qekang.com/{GUID}</code></li><li>生成GUID：在线GUID地址</li><li>将服务器地址与GUID拼接后填入<code>Team URL</code></li><li>点击<code>CHANGE LICENSE</code></li></ul><p>到此，JRebel就激活完成了。</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6rzInOsxk3ECmbyT19iaIYXxicClWfYrBTj3wsMLS5RtYMscmVDzh1icgfg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6raxgQwvL6McXToibGeYRHiasYgjDlnuwIHCibQNIQLT1vpf9PAT4kcTHHw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="设置jrebel" tabindex="-1">设置JRebel <a class="header-anchor" href="#设置jrebel" aria-label="Permalink to &quot;设置JRebel&quot;">​</a></h2><p><strong>1.设置为离线工作模式，点击<code>WORK OFFLICE</code></strong></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6rBk8Gg7bsE29BvHxE2v4ibszU6GRibwCrE7Ph2TrQBf6veltiaJCPA5hRg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>也可更改JRebel的自动刷新间隔</p><p><strong>2.为IDEA设置自动编译（一般默认就是自动编译）</strong></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6r6OxwicBq8YXWblicXnBibicswUjic786hdMp5g961rrwUTPCCHsnsTMsuOQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>在<code>advanced setting</code>勾选<code>Allow auto -make…</code></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6rL062ewmDfpe9Ten3vydMicW0tiadNsDibd0iahugPXxp3fS7cAk8UEoNjQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="对项目进行热部署" tabindex="-1">对项目进行热部署 <a class="header-anchor" href="#对项目进行热部署" aria-label="Permalink to &quot;对项目进行热部署&quot;">​</a></h2><p><strong>1.打开下面的JRebel，选择需要进行热部署的服务</strong></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6rQibVH54GdV95xrgmCKpkgR7x8xrz1RhhnyRKJ4sF4ric81rEQq2r1QKw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><strong>2.在SpringBoot项目中，选择更新类和资源</strong></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6rIJOia9YYelAFhkVhLw5K799ls06ZUna3a3ALLu6JR7bSyAsDKlXoj5Q/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><strong>3.使用JRebel+XRebel(若仅需要热部署，可选择JRebel)启动项目，而不是原生启动</strong></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6rewusChIoOHYJRk50crdiaMjHhFFPdwmcurR3db397S2NVVfLgPCARSA/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><strong>4.当本地有多个微服务时，在service中选择所有的微服务，并使用JRebel启动</strong></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6rcSZE1LYa7ERibT25aDKpDdTnvZeadtDVXzpJwyROGcmtkgWwXQ2kkCw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p>这样，当任何一个服务中的代码改变时，直接<code>Ctrl+Shift+F9</code>，JRebel将会监测到代码改变并且Reload，可以继续愉快地继续开发了，避免了重新启动服务器，等待几十秒的时间。</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6rabHQPTaxVSKS78yNffArYVyGAZmEjclCd0E61SvvRq1uZ0ibxRIBKGw/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><h2 id="使用xrebel性能分析" tabindex="-1">使用XRebel性能分析 <a class="header-anchor" href="#使用xrebel性能分析" aria-label="Permalink to &quot;使用XRebel性能分析&quot;">​</a></h2><p><strong>1.XRebel访问</strong></p><p>项目启动后访问地址为：服务器项目应用地址/xrebel</p><p>例如：:8080/xrebel</p><p><strong>2.激活XRebel</strong></p><p>激活方式同JRebel</p><p><strong>3.功能</strong></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6r5GbZBeSQ6RJkvmib2V9AKqX2kTkVwnMPVpKd9kLmC6o3maYyXenT3HQ/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><ol><li>能够捕捉到应用运行时发生的异常</li><li>能够详细的观察某每一次的调用，而且能够非常详细的观察各个步骤的执行时间</li><li>每个步骤还可以看到详细的源码执行流程</li><li>在数据库操作上能够看到具体的耗时和格式化后的SQL语句</li><li>可以查看详细的系统执行日志，可以下载到本地</li><li>不仅支持单机模式下，还可以应用于微服务分布式</li></ol><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6rbEq6TFic7h1ibWIxfhjG379bUUKHs3gGCTBt4nuqB96yb0cuexTsJQSg/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/eQPyBffYbucT2VOPUPea6UicRkSMILN6rFZ7Oh8qL8Bz60gQO47148aC8p4kJDicuqmeB3ZiaPlD7Iwv2Q5alLO7w/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" alt="图片"></p></div></div></main><footer class="VPDocFooter" data-v-6b87e69f data-v-37656e44><!--[--><!--]--><!----><nav class="prev-next" data-v-37656e44><div class="pager" data-v-37656e44><!----></div><div class="pager" data-v-37656e44><a class="pager-link next" href="/notebook/Java/Java%E5%9F%BA%E7%A1%80.html" data-v-37656e44><span class="desc" data-v-37656e44>Next page</span><span class="title" data-v-37656e44>Java基础</span></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
    <script>window.__VP_HASH_MAP__=JSON.parse("{\"2、数据库_mysql_mysql面试_基础.md\":\"40da680a\",\"1、学前端_5、小程序_小程序项目.md\":\"60a1629b\",\"1、学前端_4、node_知识篇.md\":\"a7fb500e\",\"1、学前端_2、js_ts_es6 进阶.md\":\"6d07ba10\",\"1、学前端_3、vue_vue3_vue3进阶.md\":\"7ac622b4\",\"5、运维_jenkins.md\":\"929081f8\",\"1、学前端_2、js_ts_typescript.md\":\"875a4aa4\",\"2、数据库_mysql_mysql核心_设计.md\":\"7faf46d1\",\"2、数据库_mysql_mysql核心_基础.md\":\"d8e97f3e\",\"1、学前端_1、html_css_html基础.md\":\"7584d076\",\"1、学前端_5、专题篇_问题篇.md\":\"e893aaa2\",\"2、数据库_mysql_mysql面试_进阶.md\":\"f934806d\",\"3、springboot_运维_原理.md\":\"f4a39db6\",\"2、数据库_influxdb.md\":\"6e1711e1\",\"3、springboot_新特性.md\":\"cdf3e307\",\"mybatis_mybatisplus_jpa.md\":\"8e41681b\",\"1、学前端_5、小程序_小程序优化.md\":\"a2185198\",\"2、数据库_redis_redis基础.md\":\"856df0e0\",\"linux_实用脚本.md\":\"f2299dd5\",\"4、微服务_必备_分布式基础.md\":\"d49863d5\",\"2、数据库_redis_redis优化.md\":\"e66ae32f\",\"4、微服务_springsecurity_进阶篇.md\":\"235a8e9e\",\"5、运维_chatgpt.md\":\"10db3823\",\"2、数据库_mysql_分库分表.md\":\"e1c8a095\",\"start.md\":\"9bc1ff8d\",\"5、运维_github.md\":\"2ec6c735\",\"java学前端_css.md\":\"f11b47f0\",\"1、学前端_5、专题篇_知识篇.md\":\"a463ed8d\",\"linux_软件部署.md\":\"d6722925\",\"2、数据库_neo4j.md\":\"97ad22ac\",\"team.md\":\"ce467a6a\",\"nginx_实战篇.md\":\"7785486e\",\"index.md\":\"8c3ec167\",\"计算机基础_计算机网络_网络基础.md\":\"7a54a85d\",\"1、学前端_4、node_进阶篇.md\":\"60f6db69\",\"java_java集合.md\":\"a049b313\",\"1、学前端_3、vue_vue3_vue3高级.md\":\"614d1516\",\"1、学前端_5、小程序_微信小程序.md\":\"9a4be771\",\"5、运维_netty.md\":\"12ca0278\",\"2、数据库_mysql_mysql核心_运维.md\":\"83f97c16\",\"idea_vs code.md\":\"afdcb593\",\"java学前端_vue3_组件.md\":\"1086884e\",\"idea_chrome.md\":\"4a32afbc\",\"云原生_k8s.md\":\"db58e65a\",\"2、数据库_mysql_mysql核心_进阶.md\":\"61d16dff\",\"ssm_springbatch.md\":\"f799ab4a\",\"三高_分布式.md\":\"db1b8a1b\",\"2、数据库_elasticsearch_1、es基础.md\":\"04d17448\",\"linux_linux基础.md\":\"4b0bf394\",\"idea_idea插件.md\":\"fa86e45a\",\"可视化 _ 监控_可视化大屏.md\":\"004553bd\",\"2、数据库_mongodb_整合.md\":\"3c47d7f4\",\"4、微服务_springsecurity_基础篇.md\":\"534a3401\",\"4、微服务_进阶.md\":\"69095c58\",\"计算机基础_计算机基础_操作系统.md\":\"0f75d113\",\"可视化 _ 监控_zabbix.md\":\"71f2270e\",\"nginx_基础篇.md\":\"c7d8bb50\",\"1、学前端_4、node_项目实战.md\":\"bc5065b8\",\"2、数据库_redis_redis原理.md\":\"5cedf685\",\"可视化 _ 监控_监控基础.md\":\"ac56ce4d\",\"三高_高并发.md\":\"ea9ffc99\",\"2、数据库_redis_redis高级.md\":\"1d5872f6\",\"1、学前端_4、node_基础篇.md\":\"581cc13a\",\"2、数据库_mongodb_基础.md\":\"fb7a0a29\",\"idea_idea基础.md\":\"6f2f9638\",\"4、微服务_必备_sentinel.md\":\"2edfbf6c\",\"2、数据库_elasticsearch_3、es高级.md\":\"ef146606\",\"1、学前端_3、vue_vue3_vue3新语法.md\":\"8afd5409\",\"消息中间件_canal.md\":\"3949163c\",\"ssm_maven.md\":\"2c5e12ed\",\"4、微服务_springsecurity_高级篇.md\":\"882d3ff3\",\"linux_linux进阶.md\":\"188ef7b4\",\"计算机基础_设计模式_uml.md\":\"634ba256\",\"计算机基础_算法_leetcode.md\":\"77162fb9\",\"项目实战_小兔鲜_进阶篇1.md\":\"17c52c81\",\"1、学前端_2、js_ts_es6 基础.md\":\"fda3f18b\",\"项目实战_小兔鲜_进阶篇2.md\":\"a0f23006\",\"软件测试_测试基础.md\":\"8c1060cd\",\"2、数据库_redis_本地缓存.md\":\"00617fe6\",\"nginx_面试篇.md\":\"e3fb373a\",\"mybatis_mybatisplus_mybatis.md\":\"9239e0ad\",\"linux_shell.md\":\"ae53d83b\",\"2、数据库_mysql_mysql核心_优化.md\":\"36230425\",\"项目实战_项目推荐.md\":\"f9d97630\",\"mybatis_mybatisplus_mybatisplus.md\":\"0030fd35\",\"项目实战_百度地图_进阶篇.md\":\"c8b93267\",\"三高_高可用.md\":\"323840c5\",\"java_java新特性.md\":\"22abf56d\",\"软件测试_压力测试.md\":\"9ab44440\",\"java学前端_html_js.md\":\"e0fcd240\",\"2、数据库_redis_redis实战.md\":\"d6daeeab\",\"nginx_进阶篇.md\":\"e6b63195\",\"三高_秒杀.md\":\"3878bb64\",\"5、运维_git.md\":\"0264925c\",\"java_java进阶.md\":\"e79cb5b4\",\"并发 _ 多线程_基础篇.md\":\"7adbfac5\",\"项目实战_百度地图_基础篇.md\":\"8afa5954\",\"java学前端_react.md\":\"3ec827dd\",\"1、学前端_1、html_css_css基础.md\":\"01b56712\",\"项目实战_小兔鲜_基础篇.md\":\"646f5df5\",\"1、学前端_2、js_ts_js 基础.md\":\"cb13e36f\",\"可视化 _ 监控_监控进阶.md\":\"0cdbc292\",\"计算机基础_设计模式_基础篇.md\":\"51617287\",\"计算机基础_数据结构_基础篇.md\":\"b2bfd8d4\",\"项目实战_苍穹外卖_进阶篇.md\":\"48415e41\",\"ssm_spring.md\":\"ab514659\",\"消息中间件_rabbitmq.md\":\"45b1eb28\",\"1、学前端_1、html_css_网页进阶.md\":\"db998248\",\"消息中间件_kafka.md\":\"b747dabf\",\"云原生_docker.md\":\"983c7ba7\",\"4、微服务_必备_分布式锁.md\":\"5af1cf8d\",\"消息中间件_rocketmq.md\":\"d441da85\",\"项目实战_黑马头条_基础篇.md\":\"b05af3a6\",\"ssm_springmvc.md\":\"81b9714f\",\"项目实战_支付.md\":\"1d7407dd\",\"项目实战_黑马头条_进阶篇2.md\":\"bff0015b\",\"项目实战_黑马头条_进阶篇.md\":\"19f18388\",\"java学前端_vue2_组件.md\":\"58c6b1df\",\"3、springboot_基础篇.md\":\"529c66f4\",\"3、springboot_应用篇.md\":\"8b92aa61\",\"项目实战_黑马头条_高级篇.md\":\"227c08c1\",\"1、学前端_5、小程序_uniapp.md\":\"71a282b4\",\"项目实战_云尚办公_基础篇.md\":\"1fe188ba\",\"并发 _ 多线程_并发完善.md\":\"26619c46\",\"1、学前端_2、js_ts_js 进阶.md\":\"657dfb8f\",\"java_java高级.md\":\"23782d1a\",\"java_java基础.md\":\"86d67c77\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/notebook/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"algolia\":{\"appId\":\"DW7O63I9IR\",\"apiKey\":\"f8ed758cdb288a8b06542bc35923c1a1\",\"indexName\":\"notebook\"},\"sidebar\":[{\"text\":\"Java\",\"collapsed\":true,\"items\":[{\"text\":\"Java基础\",\"link\":\"/Java/Java基础\"},{\"text\":\"Java新特性\",\"link\":\"/Java/Java新特性\"},{\"text\":\"Java进阶\",\"link\":\"/Java/Java进阶\"},{\"text\":\"Java集合\",\"link\":\"/Java/Java集合\"},{\"text\":\"Java高级\",\"link\":\"/Java/Java高级\"}]},{\"text\":\"Linux\",\"collapsed\":true,\"items\":[{\"text\":\"Linux基础\",\"link\":\"/Linux/Linux基础\"},{\"text\":\"Linux新特性\",\"link\":\"/Linux/Linux进阶\"},{\"text\":\"Shell脚本\",\"link\":\"/Linux/Shell\"},{\"text\":\"实用脚本\",\"link\":\"/Linux/实用脚本\"},{\"text\":\"软件部署\",\"link\":\"/Linux/软件部署\"}]},{\"text\":\"Nginx\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/Nginx/基础篇\"},{\"text\":\"进阶篇\",\"link\":\"/Nginx/进阶篇\"},{\"text\":\"实战篇\",\"link\":\"/Nginx/实战篇\"},{\"text\":\"面试篇\",\"link\":\"/Nginx/面试篇\"}]},{\"text\":\"SSM\",\"collapsed\":true,\"items\":[{\"text\":\"Maven\",\"link\":\"/SSM/Maven\"},{\"text\":\"Spring\",\"link\":\"/SSM/Spring\"},{\"text\":\"SpringMVC\",\"link\":\"/SSM/SpringMVC\"},{\"text\":\"SpringBatch\",\"link\":\"/SSM/SpringBatch\"}]},{\"text\":\"SpringBoot\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/3、SpringBoot/基础篇\"},{\"text\":\"应用篇\",\"link\":\"/3、SpringBoot/应用篇\"},{\"text\":\"新特性\",\"link\":\"/3、SpringBoot/新特性\"},{\"text\":\"运维&原理\",\"link\":\"/3、SpringBoot/运维&原理\"}]},{\"text\":\"SpringCloud\",\"collapsed\":true,\"items\":[{\"text\":\"SpringCloud\",\"link\":\"/4、微服务/进阶\"},{\"text\":\"Sentinel\",\"link\":\"/4、微服务/必备/Sentinel\"}]},{\"text\":\"SpringSecurity\",\"collapsed\":true,\"items\":[{\"text\":\"SpringSecurity基础篇\",\"link\":\"/4、微服务/SpringSecurity/基础篇\"},{\"text\":\"SpringSecurity进阶篇\",\"link\":\"/4、微服务/SpringSecurity/进阶篇\"},{\"text\":\"SpringSecurity高级篇\",\"link\":\"/4、微服务/SpringSecurity/高级篇\"}]},{\"text\":\"Mybatis & MybatisPlus\",\"collapsed\":true,\"items\":[{\"text\":\"Mybatis\",\"link\":\"/Mybatis&MybatisPlus/Mybatis\"},{\"text\":\"MybatisPlus\",\"link\":\"/Mybatis&MybatisPlus/MybatisPlus\"},{\"text\":\"JPA\",\"link\":\"/Mybatis&MybatisPlus/JPA\"}]},{\"text\":\"Git & ChatGPT\",\"collapsed\":true,\"items\":[{\"text\":\"Git\",\"link\":\"/5、运维/Git\"},{\"text\":\"Github\",\"link\":\"/5、运维/Github\"},{\"text\":\"ChatGPT\",\"link\":\"/5、运维/ChatGPT\"},{\"text\":\"Jenkins\",\"link\":\"/5、运维/Jenkins\"},{\"text\":\"Netty\",\"link\":\"/5、运维/Netty\"}]},{\"text\":\"数据库\",\"collapsed\":true,\"items\":[{\"text\":\"MySQL\",\"collapsed\":true,\"items\":[{\"text\":\"MySQL基础\",\"link\":\"/2、数据库/MySQL/MySQL核心/基础\"},{\"text\":\"MySQL进阶\",\"link\":\"/2、数据库/MySQL/MySQL核心/进阶\"},{\"text\":\"MySQL优化\",\"link\":\"/2、数据库/MySQL/MySQL核心/优化\"},{\"text\":\"MySQL设计\",\"link\":\"/2、数据库/MySQL/MySQL核心/设计\"},{\"text\":\"MySQL运维\",\"link\":\"/2、数据库/MySQL/MySQL核心/运维\"},{\"text\":\"分库分表\",\"link\":\"/2、数据库/MySQL/分库分表\"}]},{\"text\":\"Redis\",\"collapsed\":true,\"items\":[{\"text\":\"Redis基础\",\"link\":\"/2、数据库/Redis/Redis基础\"},{\"text\":\"Redis优化\",\"link\":\"/2、数据库/Redis/Redis优化\"},{\"text\":\"Redis原理\",\"link\":\"/2、数据库/Redis/Redis原理\"},{\"text\":\"Redis高级\",\"link\":\"/2、数据库/Redis/Redis高级\"},{\"text\":\"Redis实战\",\"link\":\"/2、数据库/Redis/Redis实战\"},{\"text\":\"本地缓存\",\"link\":\"/2、数据库/Redis/本地缓存\"}]},{\"text\":\"MongoDB\",\"collapsed\":true,\"items\":[{\"text\":\"MongoDB基础\",\"link\":\"/2、数据库/MongoDB/基础\"},{\"text\":\"MongoDB进阶\",\"link\":\"/2、数据库/MongoDB/整合\"}]},{\"text\":\"ElasticSearch\",\"collapsed\":true,\"items\":[{\"text\":\"ES基础\",\"link\":\"/2、数据库/ElasticSearch/1、ES基础\"},{\"text\":\"ES高级\",\"link\":\"/2、数据库/ElasticSearch/3、ES高级\"}]},{\"text\":\"InfluxDB\",\"link\":\"/2、数据库/influxdb\"},{\"text\":\"Neo4j\",\"link\":\"/2、数据库/Neo4j\"}]},{\"text\":\"高并发 & 秒杀 & 分布式\",\"collapsed\":true,\"items\":[{\"text\":\"分布式理论\",\"link\":\"/三高/分布式\"},{\"text\":\"分布式锁\",\"link\":\"/4、微服务/必备/分布式锁\"},{\"text\":\"秒杀\",\"link\":\"/三高/秒杀\"},{\"text\":\"高可用\",\"link\":\"/三高/高可用\"},{\"text\":\"高并发\",\"link\":\"/三高/高并发\"}]},{\"text\":\"云原生\",\"collapsed\":true,\"items\":[{\"text\":\"Docker\",\"link\":\"/云原生/Docker\"},{\"text\":\"K8S\",\"link\":\"/云原生/K8S\"}]},{\"text\":\"可视化 & 监控\",\"collapsed\":true,\"items\":[{\"text\":\"监控基础\",\"link\":\"/可视化 & 监控/监控基础\"},{\"text\":\"监控进阶\",\"link\":\"/可视化 & 监控/监控进阶\"},{\"text\":\"可视化大屏\",\"link\":\"/可视化 & 监控/可视化大屏\"},{\"text\":\"Zabbix\",\"link\":\"/可视化 & 监控/Zabbix\"}]},{\"text\":\"学前端\",\"collapsed\":true,\"items\":[{\"text\":\"HTML+CSS\",\"collapsed\":true,\"items\":[{\"text\":\"HTML基础\",\"link\":\"/1、学前端/1、HTML+CSS/HTML基础\"},{\"text\":\"CSS基础\",\"link\":\"/1、学前端/1、HTML+CSS/CSS基础\"},{\"text\":\"网页进阶\",\"link\":\"/1、学前端/1、HTML+CSS/网页进阶\"}]},{\"text\":\"JS+TS\",\"collapsed\":true,\"items\":[{\"text\":\"JS基础\",\"link\":\"/1、学前端/2、JS+TS/JS 基础\"},{\"text\":\"JS进阶\",\"link\":\"/1、学前端/2、JS+TS/JS 进阶\"},{\"text\":\"ES6基础\",\"link\":\"/1、学前端/2、JS+TS/ES6 基础\"},{\"text\":\"ES6进阶\",\"link\":\"/1、学前端/2、JS+TS/ES6 进阶\"},{\"text\":\"TS基础\",\"link\":\"/1、学前端/2、JS+TS/TypeScript\"}]},{\"text\":\"NodeJS\",\"collapsed\":true,\"items\":[{\"text\":\"Node基础\",\"link\":\"/1、学前端/4、Node/基础篇\"},{\"text\":\"Node进阶\",\"link\":\"/1、学前端/4、Node/进阶篇\"},{\"text\":\"项目实战\",\"link\":\"/1、学前端/4、Node/项目实战\"}]},{\"text\":\"Vue\",\"collapsed\":true,\"items\":[{\"text\":\"Vue3进阶\",\"link\":\"/1、学前端/3、Vue/Vue3/Vue3进阶\"},{\"text\":\"Vue3高级\",\"link\":\"/1、学前端/3、Vue/Vue3/Vue3高级\"},{\"text\":\"Vue3新语法\",\"link\":\"/1、学前端/3、Vue/Vue3/Vue3新语法\"},{\"text\":\"项目实战\",\"link\":\"/1、学前端/3、Vue/Vue2/Vue2项目\"}]},{\"text\":\"小程序\",\"collapsed\":true,\"items\":[{\"text\":\"小程序基础\",\"link\":\"/1、学前端/5、小程序/微信小程序\"},{\"text\":\"小程序优化\",\"link\":\"/1、学前端/5、小程序/小程序优化\"},{\"text\":\"uniapp\",\"link\":\"/1、学前端/5、小程序/uniapp\"},{\"text\":\"项目实战\",\"link\":\"/1、学前端/5、小程序/小程序项目\"}]}]},{\"text\":\"计算机基础\",\"collapsed\":true,\"items\":[{\"text\":\"数据结构\",\"link\":\"/计算机基础/数据结构/基础篇\"},{\"text\":\"操作系统\",\"link\":\"/计算机基础/计算机基础/操作系统\"},{\"text\":\"设计模式\",\"link\":\"/计算机基础/设计模式/基础篇\"},{\"text\":\"计算机网络\",\"link\":\"/计算机基础/计算机网络/网络基础\"},{\"text\":\"UML\",\"link\":\"/计算机基础/设计模式/UML\"},{\"text\":\"LeetCode\",\"link\":\"/计算机基础/算法/LeetCode\"}]},{\"text\":\"项目实战\",\"collapsed\":true,\"items\":[{\"text\":\"云尚办公\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/项目实战/云尚办公/基础篇\"}]},{\"text\":\"小兔鲜\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/项目实战/小兔鲜/基础篇\"},{\"text\":\"进阶篇1\",\"link\":\"/项目实战/小兔鲜/进阶篇1\"},{\"text\":\"进阶篇2\",\"link\":\"/项目实战/小兔鲜/进阶篇2\"}]},{\"text\":\"地图\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/项目实战/百度地图/基础篇\"},{\"text\":\"进阶篇\",\"link\":\"/项目实战/百度地图/进阶篇\"}]},{\"text\":\"苍穹外卖\",\"collapsed\":true,\"items\":[{\"text\":\"进阶篇\",\"link\":\"/项目实战/苍穹外卖/进阶篇\"}]},{\"text\":\"黑马头条\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/项目实战/黑马头条/基础篇\"},{\"text\":\"进阶篇\",\"link\":\"/项目实战/黑马头条/进阶篇\"},{\"text\":\"进阶篇2\",\"link\":\"/项目实战/黑马头条/进阶篇2\"},{\"text\":\"高级篇\",\"link\":\"/项目实战/黑马头条/高级篇\"}]},{\"text\":\"支付\",\"link\":\"/项目实战/支付\"},{\"text\":\"项目推荐\",\"link\":\"/项目实战/项目推荐\"}]},{\"text\":\"团队成员\",\"link\":\"/team\"}],\"siteTitle\":\"任硕的文档\",\"logo\":\"/Vue.png\",\"nav\":[{\"text\":\"Java学前端\",\"items\":[{\"items\":[{\"text\":\"HTML+JS\",\"link\":\"/Java学前端/HTML+JS\"},{\"text\":\"CSS\",\"link\":\"/Java学前端/CSS\"},{\"text\":\"Vue2+组件\",\"link\":\"/Java学前端/Vue2+组件\"},{\"text\":\"Vue3+组件\",\"link\":\"/Java学前端/Vue3+组件\"},{\"text\":\"React\",\"link\":\"/Java学前端/React\"}]}],\"activeMatch\":\"/Java/\"},{\"text\":\"软件测试\",\"items\":[{\"items\":[{\"text\":\"测试基础\",\"link\":\"/软件测试/测试基础\"},{\"text\":\"压力测试\",\"link\":\"/软件测试/压力测试\"}]}]},{\"text\":\"多线程\",\"items\":[{\"items\":[{\"text\":\"基础篇\",\"link\":\"/并发 & 多线程/基础篇\"},{\"text\":\"进阶篇\",\"link\":\"/并发 & 多线程/并发完善\"}]}]},{\"text\":\"开发工具\",\"items\":[{\"items\":[{\"text\":\"Chrome\",\"link\":\"/IDEA/Chrome\"},{\"text\":\"IDEA基础\",\"link\":\"/IDEA/IDEA基础\"},{\"text\":\"IDEA插件\",\"link\":\"/IDEA/IDEA插件\"},{\"text\":\"VS Code\",\"link\":\"/IDEA/VS Code\"}]}]},{\"text\":\"消息中间件\",\"items\":[{\"items\":[{\"text\":\"RabbitMQ\",\"link\":\"/消息中间件/RabbitMQ\"},{\"text\":\"RocketMQ\",\"link\":\"/消息中间件/RocketMQ\"},{\"text\":\"Kafka\",\"link\":\"/消息中间件/Kafka\"},{\"text\":\"Canal\",\"link\":\"/消息中间件/Canal\"}]}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/renshuo123/renshuo123.github.io\"},{\"icon\":\"twitter\",\"link\":\"#\"},{\"icon\":{\"svg\":\"<svg t=\\\"1676028692954\\\" class=\\\"icon\\\" ...</path></svg>\"},\"link\":\"https://github.com/\"}]},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":false}");</script>
    
  </body>
</html>